diff --git a/apps/collection/serializers/common.py b/apps/collection/serializers/common.py index da689009..073e554a 100644 --- a/apps/collection/serializers/common.py +++ b/apps/collection/serializers/common.py @@ -7,12 +7,15 @@ from location import models as location_models class CollectionSerializer(serializers.ModelSerializer): """Collection serializer""" + # RESPONSE + image_url = serializers.SerializerMethodField() + + # COMMON block_size = serializers.JSONField() - image = serializers.PrimaryKeyRelatedField( - queryset=gallery_models.Image.objects.all()) is_publish = serializers.BooleanField() on_top = serializers.BooleanField() + # REQUEST start = serializers.DateTimeField(write_only=True) end = serializers.DateTimeField(write_only=True) filters = serializers.JSONField(write_only=True) @@ -21,6 +24,9 @@ class CollectionSerializer(serializers.ModelSerializer): country = serializers.PrimaryKeyRelatedField( queryset=location_models.Country.objects.all(), write_only=True) + image = serializers.PrimaryKeyRelatedField( + queryset=gallery_models.Image.objects.all(), + write_only=True) class Meta: model = models.Collection @@ -30,6 +36,7 @@ class CollectionSerializer(serializers.ModelSerializer): 'start', 'end', 'image', + 'image_url', 'is_publish', 'on_top', 'filters', @@ -39,6 +46,10 @@ class CollectionSerializer(serializers.ModelSerializer): 'block_size', ] + def get_image_url(self, obj): + """Return absolute image URL""" + return obj.image.get_full_image_url(request=self.context.get('request')) + class CollectionItemSerializer(serializers.ModelSerializer): """CollectionItem serializer""" diff --git a/apps/news/serializers/common.py b/apps/news/serializers/common.py index 45ba5945..94313268 100644 --- a/apps/news/serializers/common.py +++ b/apps/news/serializers/common.py @@ -27,7 +27,7 @@ class NewsLocalizationMixinSerializer(serializers.ModelSerializer): class NewsSerializer(NewsLocalizationMixinSerializer): """News serializer.""" address = AddressSerializer() - image = serializers.URLField(source='image.get_image_url') + image_url = serializers.SerializerMethodField() class Meta: model = models.News @@ -39,13 +39,17 @@ class NewsSerializer(NewsLocalizationMixinSerializer): 'playlist', 'address', 'is_highlighted', - 'image', + 'image_url', # Localized fields 'title_trans', 'subtitle_trans', 'description_trans', ] + def get_image_url(self, obj): + """Return absolute image URL""" + return obj.image.get_full_image_url(request=self.context.get('request')) + class NewsCreateUpdateSerializer(NewsSerializer): """News update serializer."""