【发布时间】:2011-10-07 12:14:58
【问题描述】:
如果我们需要在 django admin 用户中添加更多验证,请添加表单,例如强制名字和姓氏和电子邮件.. 实现这一点的方法是什么??
【问题讨论】:
标签: django django-admin
如果我们需要在 django admin 用户中添加更多验证,请添加表单,例如强制名字和姓氏和电子邮件.. 实现这一点的方法是什么??
【问题讨论】:
标签: django django-admin
您必须创建自己的用户表单并添加必填字段:
class UserForm(forms.ModelForm):
class Meta:
model = User
def __init__(self, *args, **kwargs):
super(UserForm, self).__init__(*args, **kwargs)
self.fields['email'].required = True
self.fields['first_name'].required = True
self.fields['last_name'].required = True
然后覆盖您的 ModelAdmin 中的表单:
class UserAdmin(admin.ModelAdmin):
form = UserForm
然后在注册你自己的之前取消注册普通管理员用户:
admin.site.unregister(User)
admin.site.register(User, UserAdmin)
【讨论】:
这扩展了 Geoffroy 的回答:
from django.contrib.auth.forms import UserCreationForm
class UserForm(UserCreationForm):
class Meta:
model = User
def __init__(self, *args, **kwargs):
super(UserForm, self).__init__(*args, **kwargs)
self.fields['email'].required = True
self.fields['first_name'].required = True
self.fields['last_name'].required = True
模型管理员:
from django.contrib.auth.admin import UserAdmin
class CustomUserAdmin(UserAdmin):
add_form = UserForm
add_fieldsets = (
(None, {'fields':('username','password1','password2','first_name','last_name','email'),}),)
然后按上述方式注销:
admin.site.unregister(User)
admin.site.register(User, CustomUserAdmin)
【讨论】:
只需编写您自己的form class 和tell the ModelAdmin,将其用作表单。
【讨论】: