Наследование сериализаторов в 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 позволяет сериализовать все поля связанных моделей, но не предоставляет полный контроль над тем, какие именно поля включать или исключать.