管理UserCreationForm属性和字段

Luc*_*nde 7 django django-users

我是Django的新手,甚至在彻底找到这个问题的答案之后,我找不到任何答案.= /

我正在使用UserCretionForm来创建我的用户,我想知道一些事情:

1 - 如何管理此表单的属性?(例如,我不想显示"必需.30 charact ..."或"输入与上面相同的密码进行验证的提示.")

2 - 我想让它显示其他自定义字段.我该怎么做?(请尽量明确我必须写出代码的地方,因为我不是专家= D).(例如,在巴西,我们需要存储一些国家信息.这就是我需要这些字段的原因.)

提前致谢!(Y)

Yuj*_*ita 10

更改默认验证器消息

您可以通过error_messages参数将默认验证器的错误消息更改为表单字段.

要找出每个字段存在哪些验证器,请在此处查看:https://docs.djangoproject.com/en/dev/ref/forms/fields/#built-in-field-classes

class MyForm(UserCreationForm):
    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)
        self.fields['username'].error_messages = {'invalid': 'foobar'}
        self.fields['password1'].error_messages = {'required': 'required, man'}
Run Code Online (Sandbox Code Playgroud)

将新字段添加到现有表单

如果要添加新字段,可以通过子类化(只是python)添加它们.

如果您UserCreationForm为其创建子类并添加字段,则最终会得到一个新的表单类,它只包含原始字段和新字段.

class MyForm(UserCreationForm):
    extra_field = forms.CharField()
Run Code Online (Sandbox Code Playgroud)

覆盖管理表单

如果您尝试覆盖UserCreationForm管理站点默认使用的那个,则必须ModelAdminUsermoder 注册一个新的.

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User

from foo import MyNewUserCreationForm

class NewUserAdmin(UserAdmin):
    add_form = MyNewUserCreationForm

admin.site.unregister(User)
admin.site.register(User, NewUserAdmin)
Run Code Online (Sandbox Code Playgroud)