Features: 1) Refactor vendor lookup logic to improve code readability; 2) Enhance queryset filtering to handle both string and list inputs for vendor names;
Fixes: None; Extra: 1) Minor reformatting and alignment for better code clarity;
This commit is contained in:
parent
ba9e5080bc
commit
abc91c599e
1 changed files with 12 additions and 7 deletions
|
|
@ -184,15 +184,20 @@ class VendorNameListFilter(admin.SimpleListFilter):
|
||||||
|
|
||||||
def lookups(self, request, model_admin):
|
def lookups(self, request, model_admin):
|
||||||
qs = model_admin.get_queryset(request)
|
qs = model_admin.get_queryset(request)
|
||||||
vendors = qs.values_list("stocks__vendor__name", flat=True).distinct()
|
vendors = (
|
||||||
return [(vendor, vendor) for vendor in vendors if vendor]
|
qs.values_list("stocks__vendor__name", flat=True)
|
||||||
|
.distinct()
|
||||||
|
)
|
||||||
|
return [(v, v) for v in vendors if v]
|
||||||
|
|
||||||
def queryset(self, request, queryset):
|
def queryset(self, request, queryset):
|
||||||
if self.value():
|
val = self.value()
|
||||||
values = [v.strip() for v in self.value().split(",") if v.strip()]
|
if not val:
|
||||||
if values:
|
return queryset
|
||||||
return queryset.filter(stocks__vendor__name__in=values)
|
|
||||||
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)
|
@admin.register(Product)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue