Наследование сериализаторов в django rest

При наследовании сериализатора у меня выдает ошибку, вот код

class ProductNewSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.Product
        fields = ["product", "price", "bajin"]


class BajinNewSerializer(serializers.ModelSerializer):
    products = ProductNewSerializer()
    class Meta:
        model = models.ShopBajin
        fields = ["name", "shop", "products"]
    

в чем может быть причина ошибки The field 'products' was declared on serializer BajinNewSerializer, but has not been included in the 'fields' option.


Ответы (1 шт):

Автор решения: Danila Kartovitskii

При использовании ProductNewSerializer внутри BajinNewSerializer, необходимо явно указать это поле в списке полей fields. Для этого можно использовать depth

class BajinNewSerializer(serializers.ModelSerializer):
    products = ProductNewSerializer(many=True, read_only=True)

    class Meta:
        model = models.ShopBajin
        fields = ["name", "shop", "products"]
        depth = 1  # указываем глубину вложенности

depth позволяет сериализовать все поля связанных моделей, но не предоставляет полный контроль над тем, какие именно поля включать или исключать.

→ Ссылка