我需要从模型字段中获取值,在模板中相乘并显示产品。
例如,我有这段代码:
models.py
class Product(models.Model):
field1 = models.IntegerField()
field2 = models.IntegerField()
def multiply(self):
return self.field1 * self.field2
views.py
def home(request):
products = Product.objects.all()
#something goes here?
context = {
'products': products
}
return render(request, 'home.html', context)
模板
{% for product in products %}
{{ product.field1 }}
{{ product.field2 }}
here goes the value of field1/field2 {{ }}
{% endfor %}
如何实现这一目标更好?
答案 0 :(得分:3)
您可以在模型上添加方法:
def divided_fields(self):
return self.field1 / self.field2
然后我模板:
{{ product.divided_fields }}
另一种可能性是创建一个处理除法的自定义模板标记或过滤器,因为没有默认标记或过滤器用于此类操作。
答案 1 :(得分:1)
您可以使用django-mathfilters。
{% load mathfilters %}
...
<h1>Basic math filters</h1>
<ul>
<li>8 + 3 = {{ 8|add:3 }}</li>
<li>13 - 17 = {{ 13|sub:17 }}</li>
{% with answer=42 %}
<li>42 * 0.5 = {{ answer|mul:0.5 }}</li>
{% endwith %}
{% with numerator=12 denominator=3 %}
<li>12 / 3 = {{ numerator|div:denominator }}</li>
{% endwith %}
<li>|-13| = {{ -13|abs }}</li>
</ul>