【发布时间】:2018-04-08 11:17:50
【问题描述】:
我正在尝试扩展 Django 的 django.contrib.auth.forms.UserCreationForm 以包含电子邮件和姓名字段。我对 UserChangeForm 的类似扩展工作正常,但 UserCreationForm 仍然只显示默认的用户名、密码 1 和密码 2 字段。任何想法我做错了什么?
forms.py
class AuthorCreation(UserCreationForm):
class Meta:
model = User
fields = ('username', 'password1', 'password2',
'first_name', 'last_name', 'email', 'groups', 'is_staff')
class AuthorChange(UserChangeForm):
class Meta:
model = User
fields = ('username', 'first_name', 'last_name',
'email', 'password', 'groups', 'is_staff')
admin.py
class AuthorAdmin(UserAdmin):
"""Admin class for creating and managing Authors"""
inlines = [AuthorInline]
fieldsets = (
(None, {
'fields': ('username', ('first_name', 'last_name'),
'email', 'password', 'groups', 'is_staff')
}),
)
class Media:
css = {
'all': [
'css/codenotes-admin.css',
]
}
def get_form(self, request, obj=None, **kwargs):
if obj is None:
return forms.AuthorCreation
else:
return forms.AuthorChange
admin.site.unregister(User)
admin.site.register(User, AuthorAdmin)
同样,AuthorChangeForm 正确显示所有字段,但 AuthorCreationForm 仅显示用户名、密码 1 和密码 2 字段(加上内联表单,这两者都可以正常工作)。
我认为问题出在字段集上,但我无法从文档中弄清楚。
【问题讨论】:
标签: python django python-3.x django-forms