Django 动态选择嵌套序列化程序
我有Django 动态选择嵌套序列化程序,django,django-rest-framework,Django,Django Rest Framework,我有套件型号和产品,它与带外键的套件相关。另外还有几个用于product-ProductASerializer和ProductBSerializer的序列化程序 class KitSerializer(serializers.ModelSerializer): products = ProductASerilaizer(many=True) class Meta: model = Kit fields = ['type', 'products',
套件
型号和产品
,它与带外键的套件
相关。另外还有几个用于product-ProductASerializer
和ProductBSerializer
的序列化程序
class KitSerializer(serializers.ModelSerializer):
products = ProductASerilaizer(many=True)
class Meta:
model = Kit
fields = ['type', 'products', ...]
如何根据套件的类型动态选择产品的序列化程序。例如,如果
type==1
我使用序列化程序A,否则使用序列化程序B。因此,最后,它可能是一个包含多个序列化程序的套件,其中的序列化程序类型为。谢谢 您可以使用SerializerMethodField
并在那里选择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:
....
您可以使用SerializerMethodField并在那里选择Serializer
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:
....