diff --git a/accounts/admin.py b/accounts/admin.py index 07d27c2..3fa052e 100644 --- a/accounts/admin.py +++ b/accounts/admin.py @@ -8,8 +8,16 @@ class UserAdmin(DefaultUserAdmin): list_display = ("username", "email", "role", "source_manager", "is_active", "is_staff", "last_login") list_filter = ("role", "is_active", "is_staff", "is_superuser") search_fields = ("username", "email") - fieldsets = DefaultUserAdmin.fieldsets + ( - ("角色权限", {"fields": ("role", "source_manager")}), - ("网站权限", {"fields": ("managed_websites", "authorized_websites")}), - ) filter_horizontal = ("groups", "user_permissions", "managed_websites", "authorized_websites") + + def get_fieldsets(self, request, obj=None): + base = list(super().get_fieldsets(request, obj)) + base.append(("角色权限", {"fields": ("role", "source_manager")})) + + if obj: + if obj.role == "manager": + base.append(("管理权限", {"fields": ("managed_websites",)})) + elif obj.role == "user": + base.append(("访问权限", {"fields": ("authorized_websites",)})) + + return base \ No newline at end of file