繁体   English   中英

尝试序列化多对多关系时出错(带有 DRF 的 Django)

[英]Error when trying to Serialize a ManyToMany relationship (Django with DRF)

尝试序列化多对多关系时出现错误

在控制台中显示给我的错误描述是这样的:

AttributeError:尝试在序列化Ped_ProSerializer produto值时出现 AttributeError。 序列化器字段可能命名不正确,并且与Produto实例上的任何属性或键都不匹配。 原始异常文本为:'Produto' object 没有属性 'produto'。

关系中涉及的模型是这样写的:

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 = "__all__"

你能帮我找到解决办法吗?

Github 上的项目链接

在 class ped pro 中,您有 2 次相同的相关名称:ped_pros

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM