from django.contrib import admin from django.contrib.auth.admin import UserAdmin as BaseUserAdmin from .models import CustomUser, InterestTag # 确保 CustomUser 和 InterestTag 都已导入 # 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): list_display = ('email', 'phone_number', 'nickname', 'is_staff', 'is_active', 'date_joined') list_filter = ('is_staff', 'is_active', 'date_joined') # 定义在编辑页的字段集 (fieldsets) fieldsets = ( (None, {'fields': ('email', 'password')}), # 将 'interests' 添加到 '个人信息' 分组 ('个人信息', {'fields': ('phone_number', 'nickname', 'avatar', 'bio', 'school', 'interests')}), ('权限', {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}), ('重要日期', {'fields': ('last_login', 'date_joined')}), ) # 定义在添加用户页的字段集 (add_fieldsets) # 注意:通常在创建用户时,多对多字段(如interests)不会直接在主创建表单中处理, # 而是用户创建成功后,再进入编辑页面进行关联。 # 如果确实需要在创建时就关联,需要更复杂的表单处理。 # 为简单起见,我们不在 add_fieldsets 中添加 'interests'。 add_fieldsets = ( (None, { 'classes': ('wide',), 'fields': ('email', 'phone_number', 'nickname', 'password', 'password2'), }), # 如果你想在添加用户时,也能看到其他可选个人信息字段(非多对多): # ('可选个人信息', {'fields': ('avatar', 'bio', 'school')}), # ('可选权限', {'fields': ('is_active', 'is_staff', 'is_superuser')}), # 通常 is_active 默认 True, is_staff/superuser 默认 False ) search_fields = ('email', 'phone_number', 'nickname') ordering = ('email',) # 将 'interests' 添加到 filter_horizontal 以获得更好的多对多选择界面 filter_horizontal = ('groups', 'user_permissions', 'interests') # add_form = CustomUserCreationForm # form = CustomUserChangeForm # 为 InterestTag 模型创建一个简单的Admin界面 (如果还没有) class InterestTagAdmin(admin.ModelAdmin): list_display = ('id', 'name', 'created_at') # 在列表页显示的字段 search_fields = ('name',) # 允许按名称搜索 list_filter = ('created_at',) # 允许按创建时间筛选 ordering = ('name',) # 默认按名称排序 # 注册模型到Admin站点 admin.site.register(CustomUser, CustomUserAdmin) admin.site.register(InterestTag, InterestTagAdmin) # 使用我们刚定义的 InterestTagAdmin