Python 3.x 如果我没有';I don’我不知道将选择哪个序列化程序?
我有一个简单的序列化程序:Python 3.x 如果我没有';I don’我不知道将选择哪个序列化程序?,python-3.x,django,serialization,django-rest-framework,django-serializer,Python 3.x,Django,Serialization,Django Rest Framework,Django Serializer,我有一个简单的序列化程序: class BoxSerializer(Serializer): modelName = serializers.CharField(required=True) body = ??? 我想根据“modelName”字段序列化字段“body”。例如,如果modelName是“Phone”,那么我想对“body”字段使用PhoneSerializer。如果modelName‘book’,我想使用BookSerializer等等。我如何实现这一点? 请注
class BoxSerializer(Serializer):
modelName = serializers.CharField(required=True)
body = ???
我想根据“modelName”字段序列化字段“body”。例如,如果modelName是“Phone”,那么我想对“body”字段使用PhoneSerializer。如果modelName‘book’,我想使用BookSerializer等等。我如何实现这一点?
请注意,我不会将任何内容保存到数据库中尝试类似的操作,获取字段值,然后在
if else
块中选择序列化程序:
@api_view(['GET', 'POST'])
def serialize(request, pk):
box = Box.objects.get(pk=pk)
if box.modelName = 'x':
serializer = BoxSerializerX(box)
else:
serializer = BoxSerializerY(box)
return Response(serializer.data)
尝试以下操作,获取字段值,然后选择
if-else
块中的序列化程序:
@api_view(['GET', 'POST'])
def serialize(request, pk):
box = Box.objects.get(pk=pk)
if box.modelName = 'x':
serializer = BoxSerializerX(box)
else:
serializer = BoxSerializerY(box)
return Response(serializer.data)
为了获得最佳实践,您可以实施:
class BoxSerializer(Serializer):
modelName = serializers.CharField(required=True)
body = serializers.SerializerMethodField()
def get_body(self,box):
if box.modelName == "x":
return XSerializer(box.body)
elif box.modelName == "y":
return YSerializer(box.body)
为了获得最佳实践,您可以实施:
class BoxSerializer(Serializer):
modelName = serializers.CharField(required=True)
body = serializers.SerializerMethodField()
def get_body(self,box):
if box.modelName == "x":
return XSerializer(box.body)
elif box.modelName == "y":
return YSerializer(box.body)
您将需要一对序列化程序(显然)您将需要一对序列化程序(显然)