from django.contrib import admin from django.contrib.auth.admin import UserAdmin as BaseUserAdmin from import_export.admin import ImportExportModelAdmin from .models import User from .models import Department from .models import Role, Permission @admin.register(User) class UserAdmin(BaseUserAdmin, ImportExportModelAdmin): list_display = ('username', 'cname', 'dept', 'is_active', 'is_staff') list_filter = ('is_active', 'is_staff', 'dept') search_fields = ('username', 'cname') fieldsets = ( (None, {'fields': ('username', 'password')}), ('个人信息', {'fields': ('cname', 'dept')}), ('权限', {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}), ('重要日期', {'fields': ('last_login', 'date_joined')}), ) add_fieldsets = ( (None, { 'classes': ('wide',), 'fields': ('username', 'cname', 'password1', 'password2', 'dept'), }), ) ordering = ('username',) filter_horizontal = ('groups', 'user_permissions', 'roles') # 如果 roles 是 ManyToMany @admin.register(Department) class DepartmentAdmin(ImportExportModelAdmin): list_display = ('name', 'parent', 'order') list_filter = ('parent',) search_fields = ('name',) ordering = ('order', 'name') @admin.register(Role) class RoleAdmin(ImportExportModelAdmin): list_display = ('name', 'permission_count') search_fields = ('name',) filter_horizontal = ('permissions',) def permission_count(self, obj): return obj.permissions.count() permission_count.short_description = "权限数量" @admin.register(Permission) class PermissionAdmin(ImportExportModelAdmin): list_display = ('resource', 'action', 'desc') list_filter = ('resource', 'action') search_fields = ('resource', 'desc') ordering = ('resource', 'action')