Formとmodelでぐちゃぐちゃになった話
いつもよくわかんないけどモデルからつくってた
models.py
class User(models.Model): email = models.CharField(u'メールアドレス', max_length=200 ,blank=False) password = models.CharField(u'パスワード', max_length=64 ,blank=False) password2 = models.CharField(u'パスワード(確認用)', max_length=64 ,blank=False) nickname = models.CharField(u'ユーザーネーム', max_length=64 ,blank=False)
forms.py
class LoginForm(ModelForm): class Meta: model = User fields = ('email','password')
こんな感じでなんかこう継承してきた。
パスワードを空にする必要があった
このままではパスワードのところでis_valid(): ができなくてcleaned_data['hoge']がとれない!!!!
forms.pyを直接書き換えた
forms.py
class ChangeprofForm(forms.Form): email = forms.CharField(label=u'メールアドレス',max_length=200,required=True) nickname = forms.CharField(label=u'ユーザーネーム',max_length=64,required=True) password = forms.CharField(label=u'パスワード', max_length=64 ,required=False) password2 = forms.CharField(label=u'パスワード(確認用)', max_length=64 ,required=False)
注意点
- modelsでは使っていた「u'hogehoge'」ではなく「label=u'hogehoge'」にする
- modelsでは使っていた「blank」ではなく「required」にする
まあそんな
そんなことで詰まる初心者なんだよ!悪いか!
追記
こんな方法でもやれるとのこと。こっちのほうがModelをそのままつかえてなおかつsave()などDB操作もできてとても良い。
forms.py
class ChangeprofForm(forms.ModelForm): password = forms.CharField(label=u'パスワード', max_length=64 ,required=False) password2 = forms.CharField(label=u'パスワード(確認用)', max_length=64 ,required=False) class Meta: model = User exclude = ('password','password2')