Django - 如何计算属性中的字段

时间:2017-03-12 10:01:36

标签: django

我想计算amountpercent字段的乘法:

class Info_data(models.Model):
    name = models.CharField(blank=True, max_length=100)
    amount = models.DecimalField(max_digits=5, decimal_places=0)
    percent = models.ForeignKey(Owner, related_name="percentage")

然后写下这个属性:

def _get_total(self):
    return self.percent * self.amount
total = property(_get_total)

并在模板中使用:

{% for list_calculated in list_calculateds %}
<ul>
    <li>{{list_calculated.name}}</li>
    <li>{{list_calculated.total}}</li>
</ul>
{% endfor %}

但返回空白。如何在模板中使用属性?

3 个答案:

答案 0 :(得分:1)

您的初始尝试无效,因为您忽略了property - @property def total(self): return self.percent.percent * self.amount 功能。

然后,在signature

的帮助下,您的解决方案可以得到改进
fs

答案 1 :(得分:0)

我的问题通过一些属性编辑解决了:

def _get_total(self):
        # return float(self.percent.percent) * float(self.amount)
        return float(self.percent.percent) * float(self.amount)
    total = property(_get_total)

答案 2 :(得分:0)

我认为更好的解决方案可能是将两者都转换为十进制(因为一个已经是十进制)以避免浮点计算错误。出于同样的原因,将百分比作为字符串传递。因此这将变成:

return Decimal(f'self.percent.percent') * self.amount