gpt4 book ai didi

django - 使用不同的序列化程序进行请求和回复

转载 作者:行者123 更新时间:2023-12-03 21:23:09 24 4
gpt4 key购买 nike

我可以为 POST 使用不同的序列化程序/GET请求如下:

class CommandViewSet(DynamicModelViewSet):
queryset = Command.objects.all()
serializer_class_post = CommandSerializerPost
serializer_class_get = CommandSerializerGet
permission_classes = (AllowAny,)

def get_serializer_class(self):
if self.request.method == 'POST':
return self.serializer_class_post
elif self.request.method == 'GET':
return self.serializer_class_get

现在我想对 POST 的请求和回复使用不同的序列化程序。要求。如何做到这一点?

最佳答案

您可以覆盖序列化程序的 to_representation()方法:

class CommandSerializerPost(serializers.ModelSerializer):
# yur code here

def to_representation(self, instance):
serializer = CommandSerializerGet(instance)
return serializer.data

UPD

在上面的代码中, CommandSerializerPost总是 返回 CommandSerializerGet 的输出,不考虑 request.method .所以如果你只需要改变对 GET的响应应该是这样的要求:
class CommandSerializerPost(serializers.ModelSerializer):

def to_representation(self, instance):
if self.context['request'].method == 'GET':
serializer = CommandSerializerGet(instance)
return serializer.data
return super().to_representation(instance)

关于django - 使用不同的序列化程序进行请求和回复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51207089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com