From abc91c599e702243d378f53ea0143002accb4ad1 Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Tue, 13 May 2025 06:55:22 +0300 Subject: [PATCH] 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; --- core/admin.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/core/admin.py b/core/admin.py index bac9351a..051af56d 100644 --- a/core/admin.py +++ b/core/admin.py @@ -184,15 +184,20 @@ 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) - return 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)