python - 在 Django 的 auth 用户模型中使名字、姓氏成为必需属性而不是可选属性

标签 python django forms validation authentication

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

我能想到的两个解决方案是:

  1. 将名称放在用户配置文件中,但有一个我无法正确使用的字段有点傻。
  2. 在表单中而不是在模型中进行验证。我不认为这真的符合 Django 的理念......

出于某种原因,我似乎找不到在线执行此操作的方法,因此不胜感激。我原以为这会是一个热门问题。

干杯, 杜兰特

最佳答案

最简单的解决方案

  • 只需创建一个继承 django 的默认 UserCreationForm 的自定义 UserRegisterForm
  • first_namelast_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/

相关文章:

python - Gdal 在多次安装后不会导入 (Mac OSX)

python - 从 Python 测试用例中更改 "settings"值的最佳方法?

python - 使用 sudo 在 python 中运行 Linux 子进程

c# - Summernote 和 MVC c# 中的表单提交

python - 反向在 get_absolute_url 中返回一个空字符串

python - 既然publish_actions权限已被弃用,我如何使用API​​​​作为Facebook页面发布? (自2018年4月24日起)

python - 将数据帧从 Pandas 转换为 pyspark 到 Foundry 的数据类型

python - 哪个 Django 表单字段可以为我提供 <input type ="range"/> 的 HTML 输出?

javascript - 使用 Javascript 循环遍历复选框

html - 使用填充使输入居中