Django UserAdmin 的 add_fieldsets?

Don*_*ing 13 python django django-models web

我正在学习有关为身份验证目的制作自定义用户的教程。本教程使用了add_fieldsetsUserAdmin 中的某个属性。这是什么意思?我似乎找不到任何关于此的文档。

这是片段:

class UserAdmin(UserAdmin):
"""Define admin model for custom User model with no email field."""

    fieldsets = (
        (None, {'fields': ('email', 'password')}),
        ('Personal info', {'fields': ('first_name', 'last_name')}),
        ('Permissions', {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}),
        ('Important dates', {'fields': ('last_login', 'date_joined')}),
        ('Contact info', {'fields': ('contact_no',)}),)

    add_fieldsets = (
        (None, {
            'classes': ('wide',),
            'fields': ('email', 'password1', 'password2'),}),)

    list_display = ('email', 'first_name', 'last_name', 'is_staff')
    search_fields = ('email', 'first_name', 'last_name')
    ordering = ('email',)
Run Code Online (Sandbox Code Playgroud)

这是我遵循的教程:How to use email as username for Django authentication (removing the username)

Lon*_*Dev 13

add_fieldsets类变量用于定义将创建用户页面上显示的字段。

不幸的是,它没有很好的文档记录,我发现最接近文档的是https://docs.djangoproject.com/en/2.1/topics/auth/customizing/(搜索页面add_fieldsets)的代码示例中的注释。

classes关键的设置,我们要应用到窗体部分中的任何自定义CSS类。

fields键设置您希望在表单中显示的字段。

在您的示例中,创建页面将允许您设置email,password1password2

  • 没有文档的原因可能是因为:“... `add_fieldsets` 是 **not a standard** `ModelAdmin` **attribute**。`UserAdmin` 覆盖 `get_fieldsets` 以在创建用户时使用此属性。 ” (来自上面链接的 auth/customizing/ 文档)。这只是管理机制的巧妙使用。 (2认同)