Dynamic front filters #1
This commit is contained in:
parent
ef1af8c3ac
commit
be581c7b7d
|
|
@ -192,6 +192,10 @@ class WineRegionQuerySet(models.QuerySet):
|
||||||
def with_sub_region_related(self):
|
def with_sub_region_related(self):
|
||||||
return self.prefetch_related('wine_sub_region')
|
return self.prefetch_related('wine_sub_region')
|
||||||
|
|
||||||
|
def having_wines(self, value = True):
|
||||||
|
"""Return qs with regions, which have any wine related to them"""
|
||||||
|
return self.exclude(wines__isnull=value)
|
||||||
|
|
||||||
|
|
||||||
class WineRegion(models.Model, TranslatedFieldsMixin):
|
class WineRegion(models.Model, TranslatedFieldsMixin):
|
||||||
"""Wine region model."""
|
"""Wine region model."""
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,7 @@ class WineRegionListView(generics.ListAPIView):
|
||||||
pagination_class = None
|
pagination_class = None
|
||||||
model = models.WineRegion
|
model = models.WineRegion
|
||||||
permission_classes = (permissions.AllowAny,)
|
permission_classes = (permissions.AllowAny,)
|
||||||
queryset = models.WineRegion.objects.with_sub_region_related().all()
|
queryset = models.WineRegion.objects.with_sub_region_related().having_wines()
|
||||||
serializer_class = serializers.WineRegionSerializer
|
serializer_class = serializers.WineRegionSerializer
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ class TagCategoryFilterSet(TagsBaseFilterSet):
|
||||||
|
|
||||||
def by_product_type(self, queryset, name, value):
|
def by_product_type(self, queryset, name, value):
|
||||||
if value == product_models.ProductType.WINE:
|
if value == product_models.ProductType.WINE:
|
||||||
queryset = queryset.filter(index_name='wine-color')
|
queryset = queryset.filter(index_name='wine-color').filter(tags__products__isnull=False)
|
||||||
queryset = queryset.by_product_type(value)
|
queryset = queryset.by_product_type(value)
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user