我试图确保名字和姓氏字段对于 auth User 模型不是可选的,但我不确定如何更改它。我不能使用子类,因为我必须使用身份验证系统。
我能想到的两个解决方案是:
- 将名称放在用户配置文件中,但有一个我无法正确使用的字段有点傻。
- 在表单中而不是在模型中进行验证。我不认为这真的符合 Django 的理念......
出于某种原因,我似乎找不到在线执行此操作的方法,因此不胜感激。我原以为这会是一个热门问题。
干杯, 杜兰特
最佳答案
最简单的解决方案
- 只需创建一个继承 django 的默认
UserCreationForm
的自定义 UserRegisterForm。 first_name
和last_name
已经是django 默认User
的属性。如果您想将它们设为必填字段,请将这些字段重新创建为forms.CharField(...)
。
现在使用您自己的用户注册表。
# Contents usersapp/forms.py
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
# Inherit Django's default UserCreationForm
class UserRegisterForm(UserCreationForm):
first_name = forms.CharField(max_length=50) # Required
last_name = forms.CharField(max_length=50) # Required
# All fields you re-define here will become required fields in the form
class Meta:
model = User
fields = ['username', 'email', 'first_name', 'last_name', 'password1', 'password2']
关于python - 在 Django 的 auth 用户模型中使名字、姓氏成为必需属性而不是可选属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8466851/