自定义Django用户模型以考虑DB非空标记

时间:2017-02-01 09:24:45

标签: django orm django-authentication

我正在使用Django的标准django.contrib.auth.models在我的网站上实施授权。我在我的DB email表中添加了一个NON-NULL auth_user字段。问题是在Django中,ORM email似乎可以为空。换句话说,Django不尊重MySQL中DB字段的非null属性。有没有办法告诉Django这个字段是否需要在DB中指定,并且在表单的if field.required == True:方法中进行__init__检查时反映这些信息?

我的模型和各自的表格如下所示:

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 个答案:

答案 0 :(得分:1)

没有必要做任何事情。 EmailFields存储为varchars,并设置为空字符串而不是null时为空。

如果您想在表单上进行此操作,请使用__init__方法执行此操作:

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