Нет вывода в serializermethodfield()
Я определил поле serializermethod. Моя проблема в отображении вывода. Когда этот метод существует, поле изображения для меня пустое. Но если я удалю это поле serializermethodfield, то изображение будет выводиться правильно.
Серилизатор:
class ArticleSerializer(serializers.ModelSerializer):
user = serializers.StringRelatedField(read_only=True)
image=serializers.SerializerMethodField()
class Meta:
model=Article
fields="__all__"
validators=[Checktitle()]
def get_image (self , obj ):
request=self.context.get("request")
if obj.image:
image_url=obj.image.url
return request.build_absolute_uri(image_url)
return None
view:
class ArticleListview(APIView):
def get(self,request):
query_set=Article.objects.all()
ser = ArticleSerializer(instance=query_set,many=True,context={'request':request})
print(request)
return Response(data=ser.data)
Я хотел изменить изображение url. Но при определении этого метода изображение вообще не сохраняется.
Если вы пытаетесь изменить URL-адрес изображения модели статьи, вы можете переопределить метод представления.
class ArticleSerializer(serializers.ModelSerializer):
user = serializers.StringRelatedField(read_only=True)
class Meta:
model=Article
fields="__all__"
validators=[Checktitle()]
def to_representation(self, instance):
resp = super().to_representation(instance)
request=self.context.get("request")
if instance.image:
image_url=instance.image.url
resp['image'] = request.build_absolute_uri(image_url)
return resp