[英]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__"
你能帮我找到解决办法吗?
在 class ped pro 中,您有 2 次相同的相关名称:ped_pros
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.