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,16 +184,21 @@ class VendorNameListFilter(admin.SimpleListFilter):
|
|||
|
||||
def lookups(self, request, model_admin):
|
||||
qs = model_admin.get_queryset(request)
|
||||
vendors = qs.values_list("stocks__vendor__name", flat=True).distinct()
|
||||
return [(vendor, vendor) for vendor in vendors if vendor]
|
||||
vendors = (
|
||||
qs.values_list("stocks__vendor__name", flat=True)
|
||||
.distinct()
|
||||
)
|
||||
return [(v, v) for v in vendors if v]
|
||||
|
||||
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(stocks__vendor__name__in=values)
|
||||
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):
|
||||
|
|
|
|||
Loading…
Reference in a new issue