一般系统默认的User表的字段是没法满足我们的使用的。所以通常我们都会通过继承AbstractUser类来进行扩展
通过扩展之后的类在admin后台会导致密码字段明文显示。
这时候可以这么处理:
1.在admin.py中针对用户的userAdmin继承自系统原生的UserAdmin类
from django.contrib.auth.admin import UserAdmin
2.自定义admin类继承自UserAdmin
class UserProfileAdmin(UserAdmin):
3.重写自定义admin类中的fieldsets变量:
class UserProfileAdmin(UserAdmin):
# 重建对象详细表排列结构
fieldsets = (
(None,{'fields':('username','password','first_name','last_name','email')}),
(gettext_lazy('Personal info'),{'fields':('nick_name','birthday','gender',
'mobile', 'address', 'image')}),
(gettext_lazy('Permissions'), {'fields': ('is_superuser','is_staff','is_active',
'groups', 'user_permissions')}),
(gettext_lazy('Important dates'), {'fields': ('last_login', 'date_joined')})
)
这样就可以了
完整代码:
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.utils.translation import gettext_lazy
from .models import UserProfile
# Register your models here.
@admin.register(UserProfile)
class UserProfileAdmin(UserAdmin):
list_display = ['username', 'email', 'nick_name', 'gender', 'mobile']
list_filter = ['gender']
ordering = ['username', 'nick_name']
search_fields = ['username', 'email', 'mobile']
# 上面4个变量跟本次内容无关
fieldsets = (
(None,{'fields':('username','password','first_name','last_name','email')}),
(gettext_lazy('Personal info'),{'fields':('nick_name','birthday','gender',
'mobile', 'address', 'image')}),
(gettext_lazy('Permissions'), {'fields': ('is_superuser','is_staff','is_active',
'groups', 'user_permissions')}),
(gettext_lazy('Important dates'), {'fields': ('last_login', 'date_joined')})
)
# 下面两个变量与本次内容无关
list_per_page = 30
show_full_result_count = False