【发布时间】:2017-05-25 23:41:41
【问题描述】:
我看了这个thread,有一个排序字典的例子。
我有一个程序对象字典,其中键是程序对象,值是相关项目对象数量的查找。
def DepartmentDetail(request, pk):
department = Department.objects.get(pk=pk)
programmes = Programme.objects.all().filter(department=department).exclude(active=False).order_by('long_name')
combi = {}
for p in programmes:
prj = Project.objects.all().filter(programme=p)
combi[p] = str(len(prj))
return render(request, 'sysadmin/department.html',{'department': department, 'programmes': programmes, 'combi': sorted(combi.items())})
在模型中,程序返回一个字符串'long_name',所以我相信我正在尝试对一个字符串键和一个字符串值进行排序。
在模板中,我得到了键和值,
{% for programme, n in combi %}
这给了我错误..
unorderable types: Programme() < Programme()
我不太明白这个错误,在 python 3 documentation 中它声明 sorted() 方法接受任何可迭代的 - 那么为什么会发生这种情况?
我正在查看 collections.OrderedDict 来解决问题,但我想知道为什么这不起作用。
谢谢。
【问题讨论】:
标签: django python-3.x dictionary