如何在模板中显示计算数据

时间:2017-05-03 10:23:07

标签: python django

我需要从模型字段中获取值,在模板中相乘并显示产品。

例如,我有这段代码:

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 %}

如何实现这一目标更好?

2 个答案:

答案 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>