【问题标题】:Manage UserCreationForm properties and fields管理 UserCreationForm 属性和字段
【发布时间】:2011-12-24 02:25:40
【问题描述】:

我是 Django 的新手,即使在彻底尝试找到这个问题的答案后,我也找不到任何答案。 =/

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

1 - 如何管理此表单的属性? (例如,我不想显示“必填。30 个字符...”或“输入与上述相同的密码,以进行验证”之类的提示。)

2 - 我想让它显示其他自定义字段。我该怎么做? (请尽量弄清楚我必须在哪里编写您将向我展示的代码,因为我不是专家 =D )。 (例如,在巴西,我们需要存储一些国家信息。这就是我需要这些字段的原因。)

提前致谢! (Y)

【问题讨论】:

    标签: django django-users


    【解决方案1】:

    更改默认验证器消息

    您可以通过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'}
    

    向现有表单添加新字段

    如果您想添加新字段,您可以通过子类化(这只是 python)添加它们。

    如果您将UserCreationForm 子类化并向其添加一个字段,您最终会得到一个新的表单类,其中包含原始字段和您的新字段。

    class MyForm(UserCreationForm):
        extra_field = forms.CharField()
    

    覆盖管理表单

    如果您尝试覆盖管理站点默认使用的UserCreationForm,则必须为User 模式注册一个新的ModelAdmin

    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)
    

    【讨论】:

    • 你好宇治,谢谢你的回复。我只剩下一个疑问了。我在哪里必须这样做?谢谢
    • @user1072627 做什么?无论您的表单在哪里定义......如果您在谈论管理员,您只需将其放在由 django 运行的某个地方,因此例如您可以制作一个“补丁”应用程序并将其添加到 INSTALLED_APPS,然后将admin.py 中的管理表单代码,假设您的 urls.py 中有 admin.autodiscover()。
    猜你喜欢
    • 2017-05-05
    • 1970-01-01
    • 2018-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多