我想计算amount
和percent
字段的乘法:
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 %}
但返回空白。如何在模板中使用属性?
答案 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