我看着這個thread,用排序字典的例子。上下文排序字典Django
我有一個程序對象的字典,其中的關鍵是一個程序對象,該值是查找相關的項目對象的數量。
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來解決問題,但我想知道爲什麼這不起作用。
Thanx。
我正在查找相關的項目服務器端(因爲它是我能想到的唯一方法),你是否建議我做客戶端?如果是的話,那麼正確的方法是什麼? – Xeberdee
剛纔看到combi值實際上是什麼,看起來好像添加一個'annotate(project_count = Count('project'))'將是必需的 – Sayse
請參閱更新 – e4c5