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