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", )