我有Kit
模型和与外键与Product
相关的Kit
。另外,还有几种针对产品的序列化程序-ProductASerializer
和ProductBSerializer
。
class KitSerializer(serializers.ModelSerializer):
products = ProductASerilaizer(many=True)
class Meta:
model = Kit
fields = ['type', 'products', ...]
如何根据套件的类型为产品动态选择串行器。例如,如果type == 1
我使用序列化器A,否则使用B。所以最终它可以是Kit,其中包含几种类型的序列化器。谢谢!
答案 0 :(得分:2)
您可以使用SerializerMethodField
link并在那里选择serailizer。
class KitSerializer(serializers.ModelSerializer):
products = serializers.SerializerMethodField()
class Meta:
model = Kit
fields = ['type', 'products', ...]
def get_products(self, obj):
if obj.type == 'A':
return ProductASerilaizer(obj.products, many=True).data
else:
....