from django.contrib import admin from django.contrib.auth.admin import UserAdmin as BaseUserAdmin # 重命名以避免与可能的自定义UserAdmin冲突 from .models import CustomUser # 导入你的CustomUser模型 # 如果你想为Admin中的用户创建和修改表单提供更精细的控制,可以创建自定义表单 # from django.contrib.auth.forms import UserCreationForm, UserChangeForm # class CustomUserCreationForm(UserCreationForm): # class Meta(UserCreationForm.Meta): # model = CustomUser # fields = ('email', 'phone_number', 'nickname') # 添加你想在创建时显示的字段 # class CustomUserChangeForm(UserChangeForm): # class Meta(UserChangeForm.Meta): # model = CustomUser # fields = '__all__' # 或者列出所有你想在编辑时显示的字段 class CustomUserAdmin(BaseUserAdmin): # 使用你 CustomUser 模型的字段来配置 Admin 界面 # 定义在列表页显示的字段 (list_display) # 确保这里的字段名与你的 CustomUser 模型中的字段名一致 list_display = ('email', 'phone_number', 'nickname', 'is_staff', 'is_active', 'date_joined') # 定义右侧的过滤器 (list_filter) list_filter = ('is_staff', 'is_active', 'date_joined') # 定义在编辑页的字段集 (fieldsets) # 这是编辑现有用户时显示的表单布局 # 注意:BaseUserAdmin 的 fieldsets 是为包含 username 的 User 模型设计的 # 我们需要根据我们的 CustomUser 模型调整 fieldsets = ( (None, {'fields': ('email', 'password')}), # Django Admin 会处理密码的显示和哈希 ('个人信息', {'fields': ('phone_number', 'nickname', 'avatar', 'bio', 'school')}), ('权限', {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}), ('重要日期', {'fields': ('last_login', 'date_joined')}), ) # 定义在添加用户页的字段集 (add_fieldsets) # 这是点击 "Add user" 时显示的表单布局 add_fieldsets = ( (None, { 'classes': ('wide',), # USERNAME_FIELD 是 'email' # REQUIRED_FIELDS 是 ['phone_number', 'nickname'] # UserCreationForm 通常处理 password 和 password2 (密码确认) 'fields': ('email', 'phone_number', 'nickname', 'password', 'password2'), }), # 你也可以在这里添加其他可选字段的分组,例如: # ('可选个人信息', {'fields': ('avatar', 'bio', 'school')}), # ('可选权限', {'fields': ('is_active', 'is_staff', 'is_superuser')}), ) # 定义可搜索的字段 (search_fields) search_fields = ('email', 'phone_number', 'nickname') # 定义默认排序 (ordering) ordering = ('email',) # 对于多对多字段 (如 groups, user_permissions),使用 filter_horizontal 可以在Admin中提供更好的选择界面 filter_horizontal = ('groups', 'user_permissions',) # 如果你创建了自定义的表单 (CustomUserCreationForm, CustomUserChangeForm),可以在这里指定 # add_form = CustomUserCreationForm # form = CustomUserChangeForm # 注册你的 CustomUser 模型和自定义的 Admin 类 admin.site.register(CustomUser, CustomUserAdmin)