无法分配“5809L”:“PedidoComissao.artista”必须是“客户”实例

2024-06-18 13:15:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个模型如下:

class PedidoComissao(models.Model):
    artista = models.ForeignKey(Cliente, verbose_name='Artista')
    pedido = models.ForeignKey(Pedido)
    pedidoitem = models.ForeignKey(PedidoItem, verbose_name='Arte')
    valor_receber = models.DecimalField(max_digits=11, decimal_places=2)
    data_pagamento = models.DateTimeField(auto_now_add=False)
    status = models.BooleanField(default=False)
    origem_venda = models.CharField(null=True, blank=True, max_length=30)

    class Meta:
        verbose_name, verbose_name_plural = u'Comissão', u'Comissões'

当我尝试使用如下代码插入数据时:

comissao = PedidoComissao(artista = produto.artista_id,
                          pedido = pedido,
                          pedidoitem = item,
                          valor_receber = valor_receber,
                          origem_venda = origem_venda)
comissao.save()

我得到一个类似这样的错误:

Cannot assign "5809L": "PedidoComissao.artista" must be a "Cliente" instance.

我该怎么办


Tags: nameverbosemodelsmaxclassvalorforeignkeycliente
2条回答
artista = produto.artista_id

应该是

artista = Cliente.objects.get(produto.artista_id)

但是很难说清楚,因为我们不知道什么是produto

问题是您的模型需要一个实际的客户实例,而不仅仅是它的id

您正在执行PedidoComissao(artista=produto.artista_id, ...),但是artista应该是模型类的实例,而不是id。您可以执行PedidoComissao(artista_id=produto.artista_id, ...)PedidoComissao(artista=produto.artista, ...)

相关问题 更多 >