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:
              ....