DRF - как вернуть в ответ поле, которое не включено в модель
У меня есть вид:
class SomeView(APIView):
def get(self,request):
serializer = serializers.SomeViewSerializer
return Response({'result_url': ???})
и сериализатор:
class SomeViewSerializer(serializers.Serializer):
url = serializers.SerializerMethodField()
def get_url(self):
res_id = genetare_url(self.id)
return res_id
В этом случае url не является частью какой-либо модели, но я хочу вернуть только это (результат get_url) в ответ, но я не смог понять, как написать это в представлении выше. любая помощь будет принята с благодарностью, спасибо
Вы можете просто вызвать метод сериализатора.
class SomeView(APIView):
def get(self, request):
serializer = serializers.SomeViewSerializer()
return Response({'result_url': serializer.get_url()})
Попробуйте вот это. Добавьте class Meta:
в сериализатор
class SomeViewSerializer(serializers.Serializer):
url = serializers.SerializerMethodField()
class Meta:
fields = ('url')
def get_url(self):
res_id = genetare_url(self.id)
return res_id
и view
следующим образом:
class SomeView(APIView):
def get(self,request):
serializer = serializers.SomeViewSerializer
return Response(serializer.data)