Dynamic front filters #1

This commit is contained in:
Kuroshini 2019-11-20 13:06:04 +03:00
parent ef1af8c3ac
commit be581c7b7d
3 changed files with 6 additions and 2 deletions

View File

@ -192,6 +192,10 @@ class WineRegionQuerySet(models.QuerySet):
def with_sub_region_related(self):
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):
"""Wine region model."""

View File

@ -68,7 +68,7 @@ class WineRegionListView(generics.ListAPIView):
pagination_class = None
model = models.WineRegion
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

View File

@ -44,7 +44,7 @@ class TagCategoryFilterSet(TagsBaseFilterSet):
def by_product_type(self, queryset, name, value):
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)
return queryset