0
我遇到了以下問題:對於我的webapp,我創建了一個頁面,顯示前10名海報用戶在我的網站上發佈了多少評論。DJANGO:按值排序字典(併發送到模板)
(在格式Username - Number_of_reviews
)
的信息被傳遞給模板作爲字典中,由下面的函數在view.py產生:
DEF hall_of_game(請求):
(....)
review_histogram = {}
most_reviews = {}
for x in Vote.objects.all():
review_histogram[x.voter] = review_histogram.get(x.voter, 0) + 1
sorted_list = []
for key, value in review_histogram.items():
sorted_list.append((value, key))
sorted_list.sort(reverse=True)
return render(request, 'list/hall_of_fame.html', {(....), 'sorted': sorted_list})
模板然後轉向字典轉爲有序列表
<ol>
{% for v, k in sorted|slice:":10" %}
<li>{{ k }} - {{ v }}</li>
{% endfor %}
</ol>
但是,當2個或更多用戶具有相同數量的評論時,該函數不能再對列表進行排序,並且崩潰,從而引發類型錯誤。
類型錯誤 unorderable類型:用戶()<用戶()
我試圖通過將列表在排序的時刻「嘗試/除了」循環解決了這個問題,雖然這樣可以防止崩潰,這也可防止從排序列表。
我覺得我忽略了顯而易見的事情,但對於我的生活我無法弄清楚如何解決這個問題。
謝謝!這解決了我的問題。我也將循環外的.sort()調用拉出來,感謝快速響應! – Jasper