from django.contrib import admin from unfold.admin import ModelAdmin from .models import Report @admin.register(Report) class ReportAdmin(ModelAdmin): list_display = ['id', 'entity_type', 'entity_id', 'report_type', 'status', 'reported_by', 'reviewed_by', 'created_at'] list_filter = ['status', 'report_type', 'entity_type', 'created_at'] search_fields = ['id', 'entity_id', 'description', 'resolution_notes', 'reported_by__email'] date_hierarchy = 'created_at' ordering = ['-created_at'] readonly_fields = ['id', 'created_at', 'updated_at'] fieldsets = ( ('Report Details', { 'fields': ('id', 'report_type', 'description', 'status') }), ('Reported Entity', { 'fields': ('entity_type', 'entity_id') }), ('Reporter Information', { 'fields': ('reported_by', 'created_at') }), ('Moderation', { 'fields': ('reviewed_by', 'reviewed_at', 'resolution_notes'), 'classes': ('collapse',) }), ('Tracking', { 'fields': ('updated_at',), 'classes': ('collapse',) }), ) def get_queryset(self, request): """Optimize queryset with select_related for foreign keys""" qs = super().get_queryset(request) return qs.select_related('reported_by', 'reviewed_by')