如何从ForeignKey模型中获取相关值django admin

时间:2017-12-11 17:14:07

标签: django model save admin

我有一个带有fk的模型,但是在保存方法时我需要得到相关的值,例如:

class Pedidos(models.Model):
    ped_cliente = models.ForeignKey(Clientes, verbose_name='Cliente')
    ped_remetente = models.ForeignKey(Remetentes, verbose_name='Remetente')
    ped_produto = models.ForeignKey(Produtos, verbose_name='Produto')
    ped_data_pedido = models.DateField(verbose_name='Data Pedido')
    ped_quantidade = models.DecimalField(verbose_name='Peso/Volume', max_digits=10, decimal_places=0)
    ped_key = models.IntegerField(unique=True, editable=False, verbose_name='Cod. Pedido')

class Pagamentos(models.Model):
    pag_cliente = models.ForeignKey(Clientes, verbose_name='Cliente')
    pag_key_ped = models.ForeignKey(Pedidos, verbose_name='Cód. Pedido')
    pag_vencimento = models.DateField(verbose_name='Data Vencimento')
    pag_vlr_total = models.DecimalField(verbose_name='Valor Total', max_digits=10, decimal_places=2)

我需要在保存模型Pagamentos时使用值字段: pag_key_ped 接收 Pedidos.ped_key

我如何访问此值?

1 个答案:

答案 0 :(得分:0)

您可以通过pag_key_ped.ped_key访问它。

所以:

>>> p = Pedidos(ped_key=1)
>>> p.save()

>>> pagamentos = Pagamentos()
>>> pagamentos.pag_key_ped = p
>>> pagamentos.save()

>>> print(pagamentos.pag_key_ped.ped_key)
[out] 1

>>> pagamentos.pag_key_ped = pagamentos.pag_key_ped.ped_key
>>> pagamentos.save()

然而!:这是你想做的奇怪事情。 pag_key_ped已经是一个ForeignKey,你想用另一个ID覆盖它。如果没有具有该ID的对象,则会抛出DoesNotExist错误。