自定义 Django 用户模型以考虑数据库非空标记

Customizing Django user model to take into account DB non-null marks

我正在使用 Django 的标准 django.contrib.auth.models 在我的网站上实施授权。我已将 NON-NULL email 字段添加到我的数据库 auth_user table。问题是在 Django 的 ORM 中 email 似乎可以为空。换句话说,Django 不尊重 MySQL 中 DB 字段的非空属性。有什么方法可以告诉 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',)

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

如果你想在表格中要求它,那么在 __init__ 方法中这样做:

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