我正在运行一个瓶子框架和MongoDB。在下面的字典中,我需要在排名后对子字典进行排序。 Mongo不支持子文档的排序(除非我用$ push排序),我宁愿对python和模板中的媒体数组进行“rank”排序。
“条目”:
{
"_id" :"...",
"author" : "...",
"body" : "...",
"date" : ...,
"media" : [
{
"caption" : "Drone",
"rank" : "2",
"media_link" : "34.jpg"
},
{
"caption" : "Tea drinker",
"rank" : "1",
"media_link" : "87.jpg"
},
{
"caption" : "Daniele",
"rank" : "3",
"media_link" : "54.jpg"
}
],
}
模板代码,我想按排名进行排序。
%if ('media' in entry):
%numMedia = len(entry['media'])
%else:
%numMedia = 0
%end
%for i in range(0, numMedia):
<td valign="top">
<img width='200' src='{{entries['media'][i]['media_link']}}'><br>
Media Caption: {{entries['media'][i]['caption']}}<br>
Rank: {{entries['media'][i]['rank']}}</td>
%end
我尝试了几种不同的方法,但无法让它发挥作用..
答案 0 :(得分:1)
您好,欢迎TomSjogren, 基本上你需要像这样对集合列表进行排序:
media = entry['media']
sorted_media = sorted(media, key=lambda m:m['rank'])
我不熟悉django,但我认为那就是这样:
%for m in sorted_media:
<td valign="top">
<img width='200' src='{{m['media_link']}}'><br>
Media Caption: {{m['caption']}}<br>
Rank: {{m['rank']}}</td>
%end