在django的auth用户模型中,将名字,姓氏作为必需属性,而不是可选属性

Dur*_*and 6 python forms authentication django

我正在尝试确保auth用户模型的名字和姓氏字段不是可选的,但是我不确定如何更改它。我不能使用子类,因为必须使用身份验证系统。

我可以想到两个解决方案:1)将名称放入用户个人资料中,但是拥有一个我不能正确使用的字段有点愚蠢。2)以形式而不是模型进行验证。我认为这真的不符合django的哲学...

由于某种原因,我似乎找不到在线进行此操作的方法,因此,我们感谢您的帮助。我以为这将是一个受欢迎的问题。

干杯,杜兰德

Ali*_*jad 8

最简单的解决方案

  • 只需创建一个继承 django 的默认UserRegisterForm 的自定义UserRegisterFormUserCreationForm即可。
  • 和已经first_namelast_namedjango 默认的属性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']
Run Code Online (Sandbox Code Playgroud)


Mbu*_*uso 3

我肯定会在表格上进行验证。如果您愿意,您甚至可以在管理员中进行更多表单验证。

  • 这似乎确实是最好的选择。谢谢! (2认同)