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;
This commit is contained in:
parent
abc91c599e
commit
c92cd1d72c
1 changed files with 2 additions and 41 deletions
|
|
@ -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",
|
||||
)
|
||||
|
|
|
|||
Loading…
Reference in a new issue