diff --git a/apps/establishment/filters.py b/apps/establishment/filters.py index f2754f39..e8d7d6d0 100644 --- a/apps/establishment/filters.py +++ b/apps/establishment/filters.py @@ -173,5 +173,5 @@ class PositionsByEstablishmentFilter(filters.FilterSet): def by_subtype(self, queryset, name, value): """filter by establishment subtype""" if value not in EMPTY_VALUES: - return queryset.by_establishment_subtype(value) + return queryset.by_establishment_subtypes(value.split('__')) return queryset diff --git a/apps/establishment/models.py b/apps/establishment/models.py index eca705df..519af701 100644 --- a/apps/establishment/models.py +++ b/apps/establishment/models.py @@ -970,10 +970,12 @@ class EstablishmentGallery(IntermediateGalleryModelMixin): class PositionQuerySet(models.QuerySet): def by_establishment_type(self, value: str): - return self.filter(establishment_type__index_name=value) + return self.filter(Q(establishment_type__index_name=value) | + Q(establishment_type__isnull=True, establishment_subtype__isnull=True)) - def by_establishment_subtype(self, value: str): - return self.filter(establishment_subtype__index_name=value) + def by_establishment_subtypes(self, value: List[str]): + return self.filter(Q(establishment_subtype__index_name__in=value) | + Q(establishment_type__isnull=True, establishment_subtype__isnull=True)) class Position(BaseAttributes, TranslatedFieldsMixin):