如何访问外键的值

时间:2014-09-15 01:39:30

标签: django

如何乘以来自FK的值。我是否需要再次转换为十进制? 我的意识形态乘以现场pontos的FK值。

class Custo(models.Model):
  valor = models.DecimalField(max_digits=10, decimal_places=2,
      verbose_name='Valor R$',
      help_text='Valor do ponto em R$')

  def __unicode__(self):
      return '%s' % self.valor


class Ponto(models.Model):
  valor = models.ForeignKey(Custo)

  pontos = models.DecimalField(max_digits=10, decimal_places=2,
      help_text='Número de pontos.')

  total = models.DecimalField(max_digits=10, decimal_places=2,
      blank=True, null=True,
      help_text='Preenchido automaticamente.')


  def __unicode__(self):
      return self.bairro

def ponto_pre_save(signal, instance, sender, **kwargs):
  instance.total = **(instance.valor*instance.pontos**)
signals.pre_save.connect(ponto_pre_save, sender=Ponto)

错误:*:' Custo'不支持的操作数类型和'十进制'

1 个答案:

答案 0 :(得分:0)

你需要从外键中获取实际字段,你几乎就在那里:

#                 vvvvvvvvvvvvvv - this is the object (the foreign key)
instance.total = (instance.valor.valor * instance.pontos)
#                                ^^^^^ This is the field you want

错误消息也是一个线索,因为它告诉您正在尝试多个实例 Custo而不是十进制值。

在您的情况下,外键名称和您想要的值都是相同的,这就是您拥有valor.valor的原因。