from django import forms from django.contrib import admin from django.db.models import Prefetch from membershipworks.models import Member from .models import LockerBank, LockerInfo, LockerUnit class LockerInfoInline(admin.TabularInline): model = LockerInfo extra = 0 class LockerUnitInline(admin.TabularInline): model = LockerUnit extra = 0 @admin.register(LockerBank) class LockerBankAdmin(admin.ModelAdmin): inlines = [LockerUnitInline] prepopulated_fields = {"slug": ("name",)} @admin.register(LockerUnit) class LockerUnitAdmin(admin.ModelAdmin): inlines = [LockerInfoInline] @admin.register(LockerInfo) class LockerInfoAdmin(admin.ModelAdmin): search_fields = ["renter__username", "locker_unit__bank__name"] list_filter = ["locker_unit__bank", "locker_unit"] show_facets = admin.ShowFacets.ALWAYS list_display = [ "locker_unit", "address", "blind_code", "bitting_code", "renter", "notes", ] list_display_links = ["locker_unit", "address"] def get_queryset(self, request): return LockerInfo.objects.select_related( "locker_unit", "locker_unit__bank" ).prefetch_related( Prefetch("renter", queryset=Member.objects.only("account_name")) ) def get_changelist_formset(self, request, **kwargs): kwargs["widgets"] = { "blind_code": forms.TextInput(attrs={"size": 6}), "bitting_code": forms.TextInput(attrs={"size": 6}), } return super().get_changelist_formset(request, **kwargs)