2017-02-01 18 views
0

我使用Django的標準django.contrib.auth.models在我的網站上實施授權。我在我的DB auth_user表中添加了非NULL email字段。問題是在Django的ORM email似乎是可空的。換句話說,Django並不尊重MySQL中的DB字段的非空屬性。有沒有什麼辦法可以告訴Django這個字段是需要在DB中指定的,並且在表格的__init__方法中進行if field.required == True:檢查時會反映這個信息?定製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']。required ='''和'self.fields ['email']。required = true'具有不同的功能。我現在才瞭解它! –