admin.py 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. from django.contrib import admin
  2. from django.contrib.auth.admin import UserAdmin as BaseUserAdmin # 重命名以避免与可能的自定义UserAdmin冲突
  3. from .models import CustomUser # 导入你的CustomUser模型
  4. # 如果你想为Admin中的用户创建和修改表单提供更精细的控制,可以创建自定义表单
  5. # from django.contrib.auth.forms import UserCreationForm, UserChangeForm
  6. # class CustomUserCreationForm(UserCreationForm):
  7. # class Meta(UserCreationForm.Meta):
  8. # model = CustomUser
  9. # fields = ('email', 'phone_number', 'nickname') # 添加你想在创建时显示的字段
  10. # class CustomUserChangeForm(UserChangeForm):
  11. # class Meta(UserChangeForm.Meta):
  12. # model = CustomUser
  13. # fields = '__all__' # 或者列出所有你想在编辑时显示的字段
  14. class CustomUserAdmin(BaseUserAdmin):
  15. # 使用你 CustomUser 模型的字段来配置 Admin 界面
  16. # 定义在列表页显示的字段 (list_display)
  17. # 确保这里的字段名与你的 CustomUser 模型中的字段名一致
  18. list_display = ('email', 'phone_number', 'nickname', 'is_staff', 'is_active', 'date_joined')
  19. # 定义右侧的过滤器 (list_filter)
  20. list_filter = ('is_staff', 'is_active', 'date_joined')
  21. # 定义在编辑页的字段集 (fieldsets)
  22. # 这是编辑现有用户时显示的表单布局
  23. # 注意:BaseUserAdmin 的 fieldsets 是为包含 username 的 User 模型设计的
  24. # 我们需要根据我们的 CustomUser 模型调整
  25. fieldsets = (
  26. (None, {'fields': ('email', 'password')}), # Django Admin 会处理密码的显示和哈希
  27. ('个人信息', {'fields': ('phone_number', 'nickname', 'avatar', 'bio', 'school')}),
  28. ('权限', {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}),
  29. ('重要日期', {'fields': ('last_login', 'date_joined')}),
  30. )
  31. # 定义在添加用户页的字段集 (add_fieldsets)
  32. # 这是点击 "Add user" 时显示的表单布局
  33. add_fieldsets = (
  34. (None, {
  35. 'classes': ('wide',),
  36. # USERNAME_FIELD 是 'email'
  37. # REQUIRED_FIELDS 是 ['phone_number', 'nickname']
  38. # UserCreationForm 通常处理 password 和 password2 (密码确认)
  39. 'fields': ('email', 'phone_number', 'nickname', 'password', 'password2'),
  40. }),
  41. # 你也可以在这里添加其他可选字段的分组,例如:
  42. # ('可选个人信息', {'fields': ('avatar', 'bio', 'school')}),
  43. # ('可选权限', {'fields': ('is_active', 'is_staff', 'is_superuser')}),
  44. )
  45. # 定义可搜索的字段 (search_fields)
  46. search_fields = ('email', 'phone_number', 'nickname')
  47. # 定义默认排序 (ordering)
  48. ordering = ('email',)
  49. # 对于多对多字段 (如 groups, user_permissions),使用 filter_horizontal 可以在Admin中提供更好的选择界面
  50. filter_horizontal = ('groups', 'user_permissions',)
  51. # 如果你创建了自定义的表单 (CustomUserCreationForm, CustomUserChangeForm),可以在这里指定
  52. # add_form = CustomUserCreationForm
  53. # form = CustomUserChangeForm
  54. # 注册你的 CustomUser 模型和自定义的 Admin 类
  55. admin.site.register(CustomUser, CustomUserAdmin)