我正在学习一个关于创建一个自定义用户的教程。这个教程使用了UserAdmin中的一个特定属性add_fieldsets
。这意味着什么?我似乎找不到任何关于这个的文档。
下面是代码片段:
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',)
下面是我正在遵循的教程:How to use email as username for Django authentication (removing the username)
4条答案
按热度按时间sg2wtvxw1#
add_fieldsets
类变量用于定义将在创建用户页面上显示的字段。不幸的是,它没有很好的文档,我发现最接近文档的是https://docs.djangoproject.com/en/2.1/topics/auth/customizing/(
add_fieldsets
的搜索页面)上的代码示例中的注解。classes
键设置我们想要应用于表单部分的任何自定义CSS类。fields
键设置您希望在表单中显示的字段。在您的示例中,创建页面将允许您设置
email
、password1
和password2
。oalqel3c2#
add_fieldsets
字段的工作原理与fieldsets
字段类似,允许控制管理页面的布局,但特别是创建对象页面,而fieldsets字段用于控制更改对象页面。使用
add_fieldsets
字段,您可以决定哪些字段应该显示在创建对象页面上,添加描述等。在您的示例中,它将创建一个没有名称的部分(设置为
None
),使用classes
键集为所有字段设置特定宽度,并使用键集fields
显示字段email、password 1和password 2我希望我消除了你的疑虑!!
hsvhsicv3#
使用BaseUserAdmin类时,它会启用一些功能,如add_form和add_fieldsets
j8yoct9x4#
从Django文档(参见注解):
因此它基本上与
fieldsets
相同,但用于创建用户,并且只有在扩展UserAdmin时才需要。fieldsets
和add_fieldsets
之间的唯一区别是必须对密码字段进行一些不同的处理(“password1”和“password2”,而不是“password”)。文档在此处提供了实现自定义用户的完整示例:https://docs.djangoproject.com/en/4.1/topics/auth/customizing/#custom-users-admin-full-example