From 56db40583915c0fe705eca6f7cd00477a6911381 Mon Sep 17 00:00:00 2001 From: "Adrian A. Baumann" Date: Tue, 6 Jan 2026 00:39:19 +0100 Subject: [PATCH] "Show Count" on ThingAdmin fixed --- boxes/admin.py | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/boxes/admin.py b/boxes/admin.py index bb8d93f..a2e017f 100644 --- a/boxes/admin.py +++ b/boxes/admin.py @@ -1,10 +1,43 @@ from django import forms from django.contrib import admin +from django.contrib.admin import SimpleListFilter from django.utils.html import format_html from .models import Box, BoxType, Facet, Tag, Thing, ThingFile, ThingLink +class BoxFilter(SimpleListFilter): + """Custom filter for boxes using pk to avoid spaces in aliases.""" + + title = 'box' + parameter_name = 'box__pk' + + def lookups(self, request, model_admin): + boxes = Box.objects.select_related('box_type').order_by('id') + return [(box.pk, str(box)) for box in boxes] + + def queryset(self, request, queryset): + if self.value(): + return queryset.filter(box__pk=self.value()) + return queryset + + +class TagsFilter(SimpleListFilter): + """Custom filter for tags using pk to avoid spaces in aliases.""" + + title = 'tags' + parameter_name = 'tags__pk' + + def lookups(self, request, model_admin): + tags = Tag.objects.select_related('facet').order_by('facet__name', 'name') + return [(tag.pk, str(tag)) for tag in tags] + + def queryset(self, request, queryset): + if self.value(): + return queryset.filter(tags__pk=self.value()) + return queryset + + @admin.register(BoxType) class BoxTypeAdmin(admin.ModelAdmin): """Admin configuration for BoxType model.""" @@ -42,7 +75,7 @@ class ThingAdmin(admin.ModelAdmin): """Admin configuration for Thing model.""" list_display = ('name', 'box') - list_filter = ('box', 'tags') + list_filter = (BoxFilter, TagsFilter) search_fields = ('name', 'description') filter_horizontal = ('tags',) inlines = [ThingFileInline, ThingLinkInline]