自定义 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
我正在使用 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