Features: 1) Add whole BooleanFilter to filter whole categories in CategoryFilter.
Fixes: None; Extra: 1) Update `CategoryFilter.Meta.fields` to include `whole`; 2) Add `filter_whole_categories` method for filtering logic.
This commit is contained in:
parent
ddad857015
commit
f66a6b0cb6
1 changed files with 7 additions and 1 deletions
|
|
@ -322,6 +322,7 @@ class CategoryFilter(FilterSet):
|
||||||
name = CharFilter(field_name="name", lookup_expr="icontains", label=_("Name"))
|
name = CharFilter(field_name="name", lookup_expr="icontains", label=_("Name"))
|
||||||
parent_uuid = CharFilter(method="filter_parent_uuid", label=_("Parent"))
|
parent_uuid = CharFilter(method="filter_parent_uuid", label=_("Parent"))
|
||||||
slug = CharFilter(field_name="slug", lookup_expr="exact", label=_("Slug"))
|
slug = CharFilter(field_name="slug", lookup_expr="exact", label=_("Slug"))
|
||||||
|
whole = BooleanFilter(field_name="whole", label=_("Whole category"), method="filter_whole_categories")
|
||||||
tags = CaseInsensitiveListFilter(field_name="tags__tag_name", label=_("Tags"))
|
tags = CaseInsensitiveListFilter(field_name="tags__tag_name", label=_("Tags"))
|
||||||
level = NumberFilter(field_name="level", lookup_expr="exact", label=_("Level"))
|
level = NumberFilter(field_name="level", lookup_expr="exact", label=_("Level"))
|
||||||
|
|
||||||
|
|
@ -335,7 +336,12 @@ class CategoryFilter(FilterSet):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Category
|
model = Category
|
||||||
fields = ["uuid", "name", "parent_uuid", "slug", "tags", "level", "order_by"]
|
fields = ["uuid", "name", "parent_uuid", "slug", "tags", "level", "order_by", "whole"]
|
||||||
|
|
||||||
|
def filter_whole_categories(self, queryset, _name, value):
|
||||||
|
if value:
|
||||||
|
return queryset.filter(product_set__isnull=False).distinct()
|
||||||
|
return queryset.filter(product_set__isnull=True).distinct()
|
||||||
|
|
||||||
def filter_parent_uuid(self, queryset, _name, value):
|
def filter_parent_uuid(self, queryset, _name, value):
|
||||||
if value in ("", "null", "None"):
|
if value in ("", "null", "None"):
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue