From c92cd1d72c4b31a3fcd5a7c52a09e8ed30cbc43b Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Tue, 13 May 2025 07:10:44 +0300 Subject: [PATCH] Features: 1) Replace custom TagNameListFilter with RelatedOnlyFieldListFilter for tags; 2) Replace custom VendorNameListFilter with RelatedOnlyFieldListFilter for vendors; Fixes: None; Extra: 1) Remove redundant custom list filter classes for tags and vendors; 2) Streamline ProductAdmin list_filter configuration; --- core/admin.py | 43 ++----------------------------------------- 1 file changed, 2 insertions(+), 41 deletions(-) diff --git a/core/admin.py b/core/admin.py index 051af56d..7bf98c39 100644 --- a/core/admin.py +++ b/core/admin.py @@ -161,53 +161,14 @@ class StockInline(TabularInline): verbose_name_plural = _("stocks") -class TagNameListFilter(admin.SimpleListFilter): - title = _("tag name") - parameter_name = "tags_tag_name" - - def lookups(self, request, model_admin): - qs = model_admin.get_queryset(request) - tags = qs.values_list("tags__tag_name", flat=True).distinct() - return [(tag, tag) for tag in tags if tag] - - def queryset(self, request, queryset): - if self.value(): - values = [v.strip() for v in self.value().split(",") if v.strip()] - if values: - return queryset.filter(tags__tag_name__in=values) - return queryset - - -class VendorNameListFilter(admin.SimpleListFilter): - title = _("vendor") - parameter_name = "stocks_vendor_name" - - def lookups(self, request, model_admin): - qs = model_admin.get_queryset(request) - vendors = ( - qs.values_list("stocks__vendor__name", flat=True) - .distinct() - ) - return [(v, v) for v in vendors if v] - - def queryset(self, request, queryset): - val = self.value() - if not val: - return queryset - - values = [v.strip() for v in val.split(",") if v.strip()] if isinstance(val, str) else [v for v in val if v] - - return queryset.filter(stocks__vendor__name__in=values) - - @admin.register(Product) class ProductAdmin(BasicModelAdmin): list_display = ("name", "partnumber", "is_active", "category", "brand", "price", "rating", "modified") list_filter = ( "is_active", - TagNameListFilter, - VendorNameListFilter, + ("tags__tag_name", admin.RelatedOnlyFieldListFilter), + ("stocks__vendor__name", admin.RelatedOnlyFieldListFilter), "created", "modified", )