admin.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. from django.contrib import admin
  2. from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
  3. from .models import CustomUser, InterestTag # 确保 CustomUser 和 InterestTag 都已导入
  4. # class CustomUserCreationForm(UserCreationForm):
  5. # class Meta(UserCreationForm.Meta):
  6. # model = CustomUser
  7. # fields = ('email', 'phone_number', 'nickname')
  8. # class CustomUserChangeForm(UserChangeForm):
  9. # class Meta(UserChangeForm.Meta):
  10. # model = CustomUser
  11. # fields = '__all__'
  12. class CustomUserAdmin(BaseUserAdmin):
  13. list_display = ('email', 'phone_number', 'nickname', 'is_staff', 'is_active', 'date_joined')
  14. list_filter = ('is_staff', 'is_active', 'date_joined')
  15. # 定义在编辑页的字段集 (fieldsets)
  16. fieldsets = (
  17. (None, {'fields': ('email', 'password')}),
  18. # 将 'interests' 添加到 '个人信息' 分组
  19. ('个人信息', {'fields': ('phone_number', 'nickname', 'avatar', 'bio', 'school', 'interests')}),
  20. ('权限', {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}),
  21. ('重要日期', {'fields': ('last_login', 'date_joined')}),
  22. )
  23. # 定义在添加用户页的字段集 (add_fieldsets)
  24. # 注意:通常在创建用户时,多对多字段(如interests)不会直接在主创建表单中处理,
  25. # 而是用户创建成功后,再进入编辑页面进行关联。
  26. # 如果确实需要在创建时就关联,需要更复杂的表单处理。
  27. # 为简单起见,我们不在 add_fieldsets 中添加 'interests'。
  28. add_fieldsets = (
  29. (None, {
  30. 'classes': ('wide',),
  31. 'fields': ('email', 'phone_number', 'nickname', 'password', 'password2'),
  32. }),
  33. # 如果你想在添加用户时,也能看到其他可选个人信息字段(非多对多):
  34. # ('可选个人信息', {'fields': ('avatar', 'bio', 'school')}),
  35. # ('可选权限', {'fields': ('is_active', 'is_staff', 'is_superuser')}), # 通常 is_active 默认 True, is_staff/superuser 默认 False
  36. )
  37. search_fields = ('email', 'phone_number', 'nickname')
  38. ordering = ('email',)
  39. # 将 'interests' 添加到 filter_horizontal 以获得更好的多对多选择界面
  40. filter_horizontal = ('groups', 'user_permissions', 'interests')
  41. # add_form = CustomUserCreationForm
  42. # form = CustomUserChangeForm
  43. # 为 InterestTag 模型创建一个简单的Admin界面 (如果还没有)
  44. class InterestTagAdmin(admin.ModelAdmin):
  45. list_display = ('id', 'name', 'created_at') # 在列表页显示的字段
  46. search_fields = ('name',) # 允许按名称搜索
  47. list_filter = ('created_at',) # 允许按创建时间筛选
  48. ordering = ('name',) # 默认按名称排序
  49. # 注册模型到Admin站点
  50. admin.site.register(CustomUser, CustomUserAdmin)
  51. admin.site.register(InterestTag, InterestTagAdmin) # 使用我们刚定义的 InterestTagAdmin