在Django 1.2中将UserCreationForm的电子邮件地址自定义为用户名

时间:2010-07-23 07:58:24

标签: django django-forms

Django 1.2为用户名添加了新的允许符号,这意味着用户名可以只是电子邮件地址。到目前为止,我一直在使用内置的UserCreationForm进行注册 - 如何更改它以将'username'字段标记为'email'字段?以及如何添加额外的(但仍然是User对象)字段,如名字和姓氏? (以及如何使它们成为可选项?)

我应该在这个程度上改变UserCreationForm还是我从头开始更好(如果是后者,怎么做?)

感谢。

1 个答案:

答案 0 :(得分:2)

要更改电子邮件字段的标签,您可以将UserCreationForm子类化为如下

from django import forms
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.forms import UserCreationForm

class MyUserCreationForm(UserCreationForm):
    username = forms.RegexField(label=_("Email"), max_length=30, regex=r'^[\w.@+-]+$',
        help_text = _("Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."),
        error_messages = {'invalid': _("This value may contain only letters, numbers and @/./+/-/_ characters.")})

添加first_name和last_name字段并不是那么容易,因为表单的save方法只接受用户名,电子邮件和密码。两种可能性是:

  • 覆盖表单的保存方法
  • 在创建用户后显示UserChangeForm(这是Django管理应用程序所做的)