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)
Вернуться на верх