如何乘以来自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'不支持的操作数类型和'十进制'
答案 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
的原因。