Add schedule to establishment list serializer
This commit is contained in:
parent
521d7f19f3
commit
57a4498ba1
|
|
@ -111,6 +111,19 @@ class EstablishmentQuerySet(models.QuerySet):
|
||||||
return self.select_related('address', 'establishment_type').\
|
return self.select_related('address', 'establishment_type').\
|
||||||
prefetch_related('tags')
|
prefetch_related('tags')
|
||||||
|
|
||||||
|
def with_schedule(self):
|
||||||
|
"""Return qs with related schedule."""
|
||||||
|
return self.prefetch_related('schedule')
|
||||||
|
|
||||||
|
def with_currency_related(self):
|
||||||
|
"""Return qs with related """
|
||||||
|
return self.prefetch_related('currency')
|
||||||
|
|
||||||
|
def with_extended_address_related(self):
|
||||||
|
"""Return qs with deeply related address models."""
|
||||||
|
return self.select_related('address__city', 'address__city__region', 'address__city__region__country',
|
||||||
|
'address__city__country')
|
||||||
|
|
||||||
def with_extended_related(self):
|
def with_extended_related(self):
|
||||||
return self.select_related('establishment_type').\
|
return self.select_related('establishment_type').\
|
||||||
prefetch_related('establishment_subtypes', 'awards', 'schedule',
|
prefetch_related('establishment_subtypes', 'awards', 'schedule',
|
||||||
|
|
|
||||||
|
|
@ -225,15 +225,18 @@ class EstablishmentBaseSerializer(ProjectModelSerializer):
|
||||||
'currency'
|
'currency'
|
||||||
]
|
]
|
||||||
|
|
||||||
class EstablishmentAddressExtendedSerializer(EstablishmentBaseSerializer):
|
class EstablishmentListRetrieveSerializer(EstablishmentBaseSerializer):
|
||||||
"""Establishment with city serializer."""
|
"""Establishment with city serializer."""
|
||||||
|
|
||||||
address = AddressDetailSerializer()
|
address = AddressDetailSerializer()
|
||||||
|
schedule = ScheduleRUDSerializer(many=True, allow_null=True)
|
||||||
|
|
||||||
class Meta(EstablishmentBaseSerializer.Meta):
|
class Meta(EstablishmentBaseSerializer.Meta):
|
||||||
"""Meta class."""
|
"""Meta class."""
|
||||||
|
|
||||||
fields = EstablishmentBaseSerializer.Meta.fields
|
fields = EstablishmentBaseSerializer.Meta.fields + [
|
||||||
|
'schedule',
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
class EstablishmentGeoSerializer(EstablishmentBaseSerializer):
|
class EstablishmentGeoSerializer(EstablishmentBaseSerializer):
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,11 @@ class EstablishmentListView(EstablishmentMixinView, generics.ListAPIView):
|
||||||
"""Resource for getting a list of establishments."""
|
"""Resource for getting a list of establishments."""
|
||||||
|
|
||||||
filter_class = filters.EstablishmentFilter
|
filter_class = filters.EstablishmentFilter
|
||||||
serializer_class = serializers.EstablishmentAddressExtendedSerializer
|
serializer_class = serializers.EstablishmentListRetrieveSerializer
|
||||||
|
|
||||||
|
def get_queryset(self):
|
||||||
|
return super().get_queryset().with_schedule()\
|
||||||
|
.with_extended_address_related().with_currency_related()
|
||||||
|
|
||||||
|
|
||||||
class EstablishmentRetrieveView(EstablishmentMixinView, generics.RetrieveAPIView):
|
class EstablishmentRetrieveView(EstablishmentMixinView, generics.RetrieveAPIView):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user