【发布时间】:2014-06-04 01:55:26
【问题描述】:
我有一个排序的 QuerySet 我通过 dict 传递给模板。我需要通过 dict 维护 QuerySet 排序顺序以动态填充表。
我正在尝试通过This Answer 建议的嵌套列表来解决此问题。我已将此解决方案附加到This Suggestion。
在 Apache2 重新启动后 - 表的第一次加载具有正确的排序。一旦我单击刷新,排序就会中断。我可以多次单击刷新并最终恢复排序,但是... 再次重新启动 Apache 会将排序顺序重置为预期。
有人可以帮助我吗?谢谢。
更新:
请注意finished_case 是外键。 finished_case 还继承了 Meta 类属性 ordering = ['name']。但我也明确地.order_by('finished_case__name')。
views.url:
def caseindex(request):
qtylist = caseStockOnHand(request)
srtd = sorted(qtylist.items(), key=lambda item: item[0])
context = {'qtyonhand':srtd}
return render(request,'box_inv/caseindex.html', context)
methods.url:
def caseStockOnHand(request):
s = stocktake.objects.filter(stocktake_type__name='Case').latest('date')
c = caselog.objects.filter(date__gte=s.date)
sd = stocktake_detail_case.objects.filter(stocktake=s).order_by('finished_case__name')
qtylist = {}
#Get Stocktake Qty
for x in sd:
qtylist[x.finished_case] = x.qty
return qtylist
template.html:
{% for x, y in qtyonhand %}
{% if y > 0 %}
<tr class = {% cycle 'row1' 'row2' %}>
<td>{{x}}</td>
<td>{{y}}</td>
</tr>
{% endif %}
{% endfor %}
另外,我在 Debian Wheezy 7.5 上使用带有 mod_wsgi 的 django 1.5、python 2.7、mysql 5.5 和 Apache 2.2。
【问题讨论】:
-
您能否展示您实际所做的事情,而不是链接到两个答案