AttributeError: объект 'NoneType' не имеет атрибута 'build_absolute_uri' Django Rest Framework
У меня есть этот сериализатор, переводящий путь в url, и он работает сам по себе, но когда я пытаюсь вложить этот сериализатор в другой сериализатор, я получаю эту ошибку. У вас есть идеи, почему? Мне нужна эта функция, потому что иначе она просто показывает пути к изображению в этом главном SpecialistSerializer.
class EntityPhotosSerializer(serializers.ModelSerializer):
image = serializers.SerializerMethodField('get_file_abs_url')
class Meta:
model = EntityPhoto
fields = ('user', 'entity', 'image',)
def get_file_abs_url(self, obj):
request = self.context.get('request')
return request.build_absolute_uri(obj.image.url)
class SpecialistSerializer(serializers.ModelSerializer):
reviews_quantity = serializers.IntegerField(source="get_reviews_quantity")
class Meta:
model = Entity
fields = '__all__'
def to_representation(self, instance):
data = super().to_representation(instance)
data['photos'] = EntityPhotosSerializer(many=True, instance=instance.entityphoto_set.all()).data
return data
Traceback:
В to_representation вы обращаетесь к EntityPhotosSerializer. А в этом сериализаторе вы пытаетесь получить доступ к контексту. Если вы хотите это сделать, вам нужно передать текущий контекст в EntityPhotosSerializer в SpecialistSerializer.
def to_representation(self, instance):
data = super().to_representation(instance)
data['photos'] = EntityPhotosSerializer(many=True, context=self.context, instance=instance.entityphoto_set.all()).data
return data