123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- 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
|