我找到了一个解决方案:我不使用 UserAdmin 在管理站点中注册 CustomUser,我使用自定义 ModelAdmin。
class CustomUserAdmin(admin.ModelAdmin):
add_form = CustomUserCreationAdminForm
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('username', 'password1', 'password2')}
),
)
def get_fieldsets(self, request, obj=None):
if not obj:
return self.add_fieldsets
return super(CustomUserAdmin, self).get_fieldsets(request, obj)
def get_form(self, request, obj=None, **kwargs):
defaults = {}
if obj is None:
defaults.update({
'form': self.add_form,
'fields': admin.util.flatten_fieldsets(self.add_fieldsets),
})
defaults.update(kwargs)
return super(CustomUserAdmin, self).get_form(request, obj, **defaults)
因为我想要一个不同于更新表单的创建表单,所以我重写了 Model Admin 的 get_form 函数,就像在UserAdmin django code中所做的那样。我还为我的自定义用户创建了一个自定义创建表单:CustomUserCreationForm
我在 django-users 邮件列表中收到了可能比我的更好的回复:从管理站点取消注册原始 User 类,然后使用 UserAdmin 注册 CustomUser:
admin.site.unregister(User)
admin.site.register(CustomUser, UserAdmin)
尚未测试。
编辑:最后一个解决方案不起作用
问候