Сериализация изображений с обратным отношением DRF
У меня есть Photo serializer, который показывает мне URL фотографии, и я хочу включить это обратное отношение в EntityAPIView, чтобы я мог видеть на конкретной сущности изображения, связанные с этой сущностью. Если я сделаю это так (просто вставлю в поля related name='entityphotos'), это работает, но показывает мне ID EntityPhotos вместо URL). Есть ли у вас идеи, как показать урлы?
class SpecialistSerializer(serializers.ModelSerializer):
reviews_quantity = serializers.IntegerField(source="get_reviews_quantity")
class Meta:
model = Entity
fields = ('id', 'entity_name', 'slug', 'created_at', 'updated_at', \
'entity_category', 'entity_service', 'entity_animal', \
'entity_member', 'entity_email', 'entity_address', 'entity_city', \
'entity_zip_code', 'entity_description', 'entity_phone', \
'entity_nip', 'gallery', 'points_from_reviews', 'reviews_quantity', \
'logo', 'payment_method_cards', 'payment_method_cash', \
'payment_method_blik', 'payment_method_wire', 'payment_method_installments', \
'creator', 'lat', 'lng', 'img_map', 'entityphoto', )
class SpecialistDetailAPIView(generics.RetrieveAPIView):
queryset = Entity.objects.all()
serializer_class = SpecialistSerializer
lookup_field = 'pk'
class Entity(models.Model):
......
class EntityPhoto(models.Model):
user = models.ForeignKey('users.CustomUser', on_delete=models.CASCADE, null=True, related_name='entity_photo_user')
entity = models.ForeignKey(Entity, on_delete=models.CASCADE, null=False, related_name='entityphoto')
image = models.FileField(upload_to='entities/')
created_at = models.DateTimeField(editable=False, default=timezone.now)
updated_at = models.DateTimeField(default=timezone.now)
class EntityPhotosSerializer(serializers.ModelSerializer):
image = serializers.SerializerMethodField('get_image')
def get_image(self, entity):
if not entity.image:
return
request = self.context.get('request')
return request.build_absolute_uri(entity.entity.url)
class Meta:
model = EntityPhoto
fields = ('user', 'entity', 'image',)