说我有一个模型:
class Mymodel(models.Model)
property = models.IntegerField()
说我有一个功能:
def func():
instance = Mymodel.objects.order_by('?')[0]
instance2 = Mymodel.objects.order_by('?')[0]
plan = [instance, instance2]
return plan
我想使用for循环将模型实例的“属性”中的整数加在一起,然后将总和输出到我的模板之一中?
我尝试了添加过滤器,但问题是将要添加在一起的实例数量是动态的,所以我不能简单地做myModel.0.property|add:myModel.1.property
谢谢。
编辑:
为此找到了解决方法:
在模板中,只需使用| length过滤器以及if语句即可
{% if instancelist|length == 2 %}
{{ instancelist.0.property|add:instancelist.1.property }}
{% else %}
{{ instancelist.0.property|add:instancelist.1.property|add:instancelist.2.property }}
{% endif %}
以此类推。
答案 0 :(得分:1)
找到了解决此问题的方法:
在您的模板中,只需将 |length 过滤器与 if 语句一起使用:
{% if instancelist|length == 2 %}
{{ instancelist.0.property|add:instancelist.1.property }}
{% else %}
{{ instancelist.0.property|add:instancelist.1.property|add:instancelist.2.property }}
{% endif %}
答案 1 :(得分:0)
根据您的问题获取instance
和instance2
属性字段的总和。您可以这样尝试:
instance = Mymodel.objects.order_by('?')[0:1]
instance2 = Mymodel.objects.order_by('?')[0:1]
sum = 0
for item in instance:
sum += item.property
for item1 in instance2:
sum += item1.property
return sum