如何让Django ORM反转查询结果的顺序?
在我努力理解如何对Django模型进行查询的过程中,我尝试用以下的方式获取最近添加的三个有效的头像模型:
newUserAv = Avatar.objects.filter(valid=True).order_by("date")[:3]
但是,这个查询却给我返回了按日期排序的前三个头像,而不是我想要的最近添加的三个。我知道这应该很简单,但我在Django的文档中找不到答案:我该怎么选择最后三个头像对象,而不是前三个呢?
2 个回答
1
创建一个列表并
def messages_to_list(messages):
result = []
for message in messages:
result.append(message_to_list(message))
result.reverse()
return result
def message_to_list(message):
return {
'member': str(message.member),
'message': str(message.message),
'pub_date': str(message.pub_date.strftime(" %B %d,%Y, %A %I:%M%p ")),
'admin': message.admin
}
上面的结果会按照发布日期从新到旧排序,然后再按照标题从小到大排序。
Entry.objects.filter(pub_date__year=2005).order_by('-pub_date', 'headline')
如果我们有一个Python的序列,查看seq[-5:],我们会先看到倒数第五个元素。Django不支持这种从后往前访问的方式,因为在SQL中这样做效率不高。
150
在字段名称前面加一个连字符。
.order_by('-date')