fix tagcategory queryset

This commit is contained in:
evgeniy-st 2019-10-15 18:13:37 +03:00
parent c94ad3f017
commit 42ae1cbb87
4 changed files with 13 additions and 17 deletions

View File

@ -33,16 +33,21 @@ class TagCategoryQuerySet(models.QuerySet):
"""Extended queryset for TagCategory model.""" """Extended queryset for TagCategory model."""
def with_base_related(self): def with_base_related(self):
"""Select related objects."""
return self.prefetch_related('tags') return self.prefetch_related('tags')
def for_news(self): def for_news(self):
"""Select tag categories for news."""
return self.filter(news_types__isnull=True) return self.filter(news_types__isnull=True)
def for_establishments(self): def for_establishments(self):
return self """Select tag categories for establishments."""
# return self.filter(models.Q(est_subtype_tag_categories__isnull=True) | return self.filter(models.Q(establishment_types__isnull=False) |
# models.Q(est_type_tag_categories__isnull=True)).\ models.Q(establishment_subtypes__isnull=False))
# distinct()
def with_tags(self, switcher=True):
"""Filter by existing tags."""
return self.filter(tags__isnull=not switcher)
def with_related(self): def with_related(self):
return self.select_related('country').prefetch_related('tags') return self.select_related('country').prefetch_related('tags')

View File

@ -49,7 +49,7 @@ class TagCategoryBaseSerializer(serializers.ModelSerializer):
class TagCategoryDetailSerializer(TagCategoryBaseSerializer): class TagCategoryDetailSerializer(TagCategoryBaseSerializer):
"""Detailed serializer for TagCategory model."""
class Meta(TagCategoryBaseSerializer.Meta): class Meta(TagCategoryBaseSerializer.Meta):
"""Meta class.""" """Meta class."""

View File

@ -1,5 +1,5 @@
"""Tag views.""" """Tag views."""
from rest_framework import generics, viewsets, mixins from rest_framework import viewsets, mixins
from tag import filters, models, serializers from tag import filters, models, serializers
from rest_framework import permissions from rest_framework import permissions
@ -14,20 +14,11 @@ class TagViewSet(mixins.ListModelMixin, mixins.CreateModelMixin,
serializer_class = serializers.TagBackOfficeSerializer serializer_class = serializers.TagBackOfficeSerializer
class TagCategoryListCreateView(generics.ListCreateAPIView):
"""List/create tag category view."""
pagination_class = None
permission_classes = (permissions.AllowAny, )
queryset = models.TagCategory.objects.all()
serializer_class = serializers.TagCategoryBackOfficeDetailSerializer
class TagCategoryViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): class TagCategoryViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
"""ViewSet for TagCategory model.""" """ViewSet for TagCategory model."""
filterset_class = filters.TagCategoryFilterSet filterset_class = filters.TagCategoryFilterSet
pagination_class = None pagination_class = None
permission_classes = (permissions.AllowAny, ) permission_classes = (permissions.AllowAny, )
queryset = models.TagCategory.objects.with_base_related() queryset = models.TagCategory.objects.with_tags().with_base_related()
serializer_class = serializers.TagCategoryBaseSerializer serializer_class = serializers.TagCategoryBaseSerializer

View File

@ -7,7 +7,7 @@ urlpatterns = [
path('establishments/', include('establishment.urls.back')), path('establishments/', include('establishment.urls.back')),
path('location/', include('location.urls.back')), path('location/', include('location.urls.back')),
path('news/', include('news.urls.back')), path('news/', include('news.urls.back')),
path('tags/', include(('tag.urls.back', 'tag'), namespace='tag')), # path('tags/', include(('tag.urls.back', 'tag'), namespace='tag')),
path('account/', include('account.urls.back')), path('account/', include('account.urls.back')),
path('comment/', include('comment.urls.back')), path('comment/', include('comment.urls.back')),
] ]