Ошибка при попытке сериализации отношения ManyToMany (Django с DRF)

< <

AttributeError: Получена ошибка AttributeError при попытке получить значение для поля product на сериализаторе Ped_ProDetail. Поле сериализатора может быть названо неверно и не совпадать с атрибутом или ключом экземпляра Product. Оригинальный текст исключения был: 'Product' object has no attribute 'product'.

Модели, участвующие в отношениях, записываются следующим образом:

class Produto(models.Model):
    valor_unitario = models.DecimalField(max_digits=10, decimal_places=2, default=0.00)
    nome = models.CharField(max_length=75)
    descricao = models.TextField()
    genero = models.CharField(max_length=10, default="Indefinido")
    qtd_estoque = models.IntegerField()
    cor = models.ForeignKey(Cor, on_delete=models.PROTECT, related_name="produtos")
    tamanho = models.ForeignKey(
        Tamanho, on_delete=models.PROTECT, related_name="produtos"
    )
    marca = models.ForeignKey(Marca, on_delete=models.PROTECT, related_name="produtos")

class Pedido(models.Model):
    endereco_entrega = models.ForeignKey(
        Endereco, on_delete=models.PROTECT, null=True, related_name="pedidos"
    )
    forma_pagamento = models.ForeignKey(
        Forma_Pagamento, on_delete=models.PROTECT, null=True, related_name="pedidos"
    )
    usuario_dono = models.ForeignKey(
        get_user_model(), on_delete=models.PROTECT, related_name="pedidos"
    )
    data_entrega = models.DateField()
    data_pedido = models.DateField(default=date.today)
    finalizado = models.BooleanField(default=False)
    qtd_parcela = models.IntegerField()
    valor_parcela = models.DecimalField(max_digits=10, decimal_places=2, default=0.00)
    preco_total = models.DecimalField(max_digits=10, decimal_places=2, default=0.00)
    itens = models.ManyToManyField(Produto, related_name="pedidos", through="Ped_Pro")

class Ped_Pro(models.Model):
    produto = models.ForeignKey(
        Produto, on_delete=models.PROTECT, related_name="ped_pros"
    )
    pedido = models.ForeignKey(
        Pedido, on_delete=models.PROTECT, related_name="ped_pros"
    )
    qtd_produto = models.IntegerField(default=1)
    data_entrada = models.DateTimeField(default=datetime.now)

Сериализаторы:

class ProdutoSerializer(ModelSerializer):
    class Meta:
        model = Produto
        fields = "__all__"


class Ped_ProSerializer(ModelSerializer):
    class Meta:
        model = Ped_Pro
        fields = "__all__"


class PedidoSerializer(ModelSerializer):
    itens = Ped_ProSerializer(many=True, read_only=True)

    class Meta:
        model = Pedido
        fields = ("usuario_dono", "data_pedido", "data_entrega", "itens")

Можете ли вы помочь мне найти путь к решению?

Ссылка на проект на Github

В классе ped pro у вас есть 2 раза одно и то же связанное имя: ped_pros

Вернуться на верх