Wen*_*rth 10 django django-admin
如果我们需要在django管理员用户添加更多的验证添加表格,如使名字和姓氏和电子邮件强制..是什么方式实现这一点?
您必须创建自己的用户表单并添加必填字段:
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
Run Code Online (Sandbox Code Playgroud)
然后覆盖ModelAdmin中的表单:
class UserAdmin(admin.ModelAdmin):
form = UserForm
Run Code Online (Sandbox Code Playgroud)
然后在注册自己的用户之前取消注册普通管理员用户:
admin.site.unregister(User)
admin.site.register(User, UserAdmin)
Run Code Online (Sandbox Code Playgroud)
这扩展了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
Run Code Online (Sandbox Code Playgroud)
的ModelAdmin:
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'),}),)
Run Code Online (Sandbox Code Playgroud)
然后取消注册如上:
admin.site.unregister(User)
admin.site.register(User, CustomUserAdmin)
Run Code Online (Sandbox Code Playgroud)