diff --git a/apps/location/models.py b/apps/location/models.py index fdc2ef5d..3f104644 100644 --- a/apps/location/models.py +++ b/apps/location/models.py @@ -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.""" diff --git a/apps/location/views/common.py b/apps/location/views/common.py index 19689329..660a1dbe 100644 --- a/apps/location/views/common.py +++ b/apps/location/views/common.py @@ -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 diff --git a/apps/tag/filters.py b/apps/tag/filters.py index c127f765..8d2343ec 100644 --- a/apps/tag/filters.py +++ b/apps/tag/filters.py @@ -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