from django.contrib import admin from django.contrib.auth.admin import UserAdmin from users.forms import CustomUserCreationForm, CustomUserChangeForm from .models import User, SchoolClass, Role, UserRole, UserSetting class SchoolClassInline(admin.TabularInline): model = SchoolClass.users.through class RoleInline(admin.TabularInline): model = UserRole @admin.register(SchoolClass) class SchoolClassAdmin(admin.ModelAdmin): list_display = ('id', 'name') @admin.register(Role) class SchoolRoleAdmin(admin.ModelAdmin): list_display = ('name',) list_filter = ('name',) @admin.register(UserRole) class UserSchoolRoleAdmin(admin.ModelAdmin): list_display = ('user', 'role') # list_filter = ('role__school',) readonly_fields = [] # search_fields = ('user__email', 'user__username') class CustomUserAdmin(UserAdmin): add_form = CustomUserCreationForm form = CustomUserChangeForm model = User list_display = ('username', 'first_name', 'last_name', 'school_classes_list') list_filter = ('school_classes',) inlines = [ SchoolClassInline, RoleInline, ] def school_classes_list(self, obj): return ', '.join([s.name for s in obj.school_classes.all()]) # fieldsets = UserAdmin.fieldsets + ( # (None, {'fields': ('school_classes',)}), # ) admin.site.register(User, CustomUserAdmin) @admin.register(UserSetting) class UserSettingAdmin(admin.ModelAdmin): list_display = ('user', 'selected_class') raw_id_fields = ('user', 'selected_class')