在模板中过滤以在django中专门安排数据
问题描述:
如何在我的模板中使用过滤器将值放入行匹配的行中。在模板中过滤以在django中专门安排数据
因此,例如内部OD密钥行1中的所有值都应该具有该密钥的值 ,则在第二行中应该具有行2值的Outter OD密钥的所有值。
任何帮助,将不胜感激
这里是我的view.py
@login_required
def shipping(request, id):
sheet_data = Sheet.objects.get(pk=id)
work_order = sheet_data.work_order
customer_data = Customer.objects.get(id=sheet_data.customer_id)
customer_name = customer_data.customer_name
title_head = 'Shipping-%s' % sheet_data.work_order
complete_data = Sheet.objects.raw("""select s.id, d.id d_id, s.work_order, d.target, i.reading, d.description, i.serial_number from app_sheet s left join app_dimension d on s.id = d.sheet_id
left join app_inspection_vals i on d.id = i.dimension_id""")
for c_d in complete_data:
dim_description = Dimension.objects.filter(sheet_id=c_d.id).values_list('description', flat=True).distinct()
dim_id = Dimension.objects.filter(sheet_id=c_d.id)[:1]
for d_i in dim_id:
dim_data = Inspection_vals.objects.filter(dimension_id=d_i.id)
reading_data = Inspection_vals.objects.filter(dimension_id=d_i.id)
key_list = []
vals_list = []
for xr in complete_data:
key_list.append(xr.description)
vals_list.append(xr.reading)
#print reading_desc
sample_size = dim_data
res = {}
for i in range(len(key_list)):
if key_list[i] in res:
res[key_list[i]].append(vals_list[i])
else:
res[key_list[i]]=[vals_list[i]]
reading_desc = res
return render(request, 'app/shipping.html',
{
'work_order': work_order,
'sample_size': sample_size,
'customer_name': customer_name,
'title': title_head,
'complete_data': complete_data,
'dim_description': dim_description,
'reading_desc': reading_desc,
})
这里是reading_desc的是正确地使用每一个正确的密钥和值输出。
{u'Inner OD': [2, None, None, 1, 1, 1, 6, 1, 2, 4, 5, 5, 7, 1, 1, 2, 3, 4, 5, 1, None, 3, 4, 6], u'Outter OD': [3, 4, 5, 1, 3, 2, 2, 2, 2, 1, 1, 1, 1, 3, 4, 3, 5, 6, 5, 2, 3]}
这里是我的模板shipping.html
<div class="container">
<div class="row">
<div>
<table >
<thead>
<tr>
<th>Serial Number</th>
{% for ss in sample_size %}
<th>{{ ss.serial_number }}</th>
{% endfor %}
</tr>
</thead>
<tbody>
{% for desc in dim_description.all %}
<tr>
<th> {{ desc }}</th>
{% for r_c in reading_desc %}
<td class="{% cycle r_c, r_c %}"> {{ r_c }} </td>
{% endfor %}
{% endfor %}
</tr>
</tbody>
</table>
</div>
</div>
</div>
这是我想它看起来像
答
好吧这里我们去什么。这是你如何循环使用Django的HTML页面中的字典:
<tbody>
<tr>
{% for desc in dim_description.all %}
<th> {{ desc }}</th>
{% endfor %}
</tr>
{% for key, values in reading_desc.items %}
<tr>
<td class="some_class_here"> {{ key }} </td>
{% for v in values %}
<td class="some_class_here">{{ v }}</td>
{% endfor %}
<tr>
{% endfor %}
</tbody>
这应该足以让你去。这里发生了一些事情。首先,在迭代dim_description列表的第一个循环中,我们添加一个单行,其中包含多个<th>
标记以显示标题(在您的情况下为1-24)。然后在第二个循环中,我们循环查看字典。我们从显示键(第一次迭代的内部OD)开始,然后我们必须遍历每个键的所有值(页面中第二个循环的内部for循环),并且它应该显示您想要的内容。这可能不是完整的答案,但它应该给你足够的骨头来解决你的问题。
+1
完美谢谢! @Michael Platt – Snowman08
所以你问的是如何迭代字典并以表格格式显示键和值? –
基本上是@MichaelPlatt – Snowman08