在我的views.py中我有:
credits_total = Course.objects.filter(dept = dept_code1, b_tech = 1, type = 1).values('sem').annotate(sum = Sum('credits'))
所以credits_total有以下内容:
credits_total = [{'sem': 3, 'sum': 19},{'sem': 4, 'sum': 20},{'sem': 5, 'sum': 21},{'sem':6,'sum':22},{'sem':7,'sum':21},{'sem':8,'sum':24}]
我想做的事情如下:
{% for i in "012345" %}
....
<b> {{credits_total[i]['sum']}} </b>
...
{% endfor %}
如何在列表中的特定索引处访问字典中的特定键?
我是django的新手,所以你可以详细解释一下。谢谢!
答案 0 :(得分:1)
Python词典最好被认为是unordered sets。您不应该尝试索引它们......也就是说,您可以iterate over your dictionary数据并按如下方式打印它。
{% if credits_total %}
{% for item in credits_total %}
sem:{{ item.sem }}, sum:{{ item.sum }}
{% endfor %}
{% endif %}
答案 1 :(得分:0)
在模板中,您可以使用点表示法。 像这样:
<b>{{credits_total.i.sum}}</b>
但问题是循环中的i
var不是数字。
您需要编写自己的标记过滤器以在python中获得类似常规range()
的内容。
请参阅:create range filter
答案 2 :(得分:0)
这就是诀窍: 在views.py中:
from itertools import izip_longest
def course(request, dept_code):
....
sum_credits_total = list()
....
for i in credits_total: sum_credits_total.append(i['sum'])
....
total_list = izip_longest(sum_credits_total,hours_total,sum_sem_credits,sum_sem_hours)
context_dict['total_list'] = total_list
return render (request,'course.html', context_dict)
在模板中:
{% for i,j,k,l in total_list %}
{{i}}....{{j}}....{{k}}....{{l}}
{% endfor %}