2017-02-01 4 views
0

私はDjangoの標準django.contrib.auth.modelsを使用して、私のウェブサイトで認証を実装しています。私はDBauth_userテーブルにNON-NULL emailフィールドを追加しました。問題は、DjangoのORMでemailがnull可能であるようです。言い換えれば、DjangoはMySQLのDBフィールドのnull以外の属性を尊重しません。 DjangoにDBに指定されているようにこのフィールドが必要であることを伝える方法はありますか?if field.required == True:フォームの__init__メソッドをチェックするときにこの情報を反映させるには?DB非ヌルマークを考慮してDjangoユーザモデルをカスタマイズする

class UserForm(forms.ModelForm): 

    def __init__(self, *args, **kwargs): 
     super(UserForm, self).__init__(*args, **kwargs) 
     for field_name, field in self.fields.items(): 
      if field.required == True: 
       field.widget.attrs['required'] = '' 
    class Meta: 
     model = User 
     fields = ('email', 'password',) 

答えて

1

何もする必要はありません。

私のモデルとそれぞれの形式は次のようになり。 EmailFieldsはvarcharsとして格納され、空の場合はnullではなく空の文字列に設定されます。

あなたはそれがフォーム上で必要なようにしたい場合は、その__init__方法でそれを行う:

self.fields['email'].required = True 
+0

いいえ、なぜあなたはそれを行う必要があるでしょうか? –

+0

++++++++++++++++ 1。 'self.fields ['email']。= '''と 'self.fields ['email']。required = true'は異なる機能を持っています。私はそれだけ今理解した! –

関連する問題