I have view:
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()})
试试这个。添加obj
参数到methodfieldget_url(self, obj)
class SomeViewSerializer(serializers.Serializer):
url = serializers.SerializerMethodField()
def get_url(self, obj):
res_id = genetare_url(self.id)
return res_id
并将任何数据传递给序列化器
ex:SomeViewSerializer(request.data)
如下:
class SomeView(APIView):
def get(self, request, format=None):
serializer = SomeViewSerializer(request.data)
return Response(serializer.data)
这可能对你有帮助。