为了理解对Django模型的查询,我一直试图通过以下查询获得最后3个有效的Avatar模型:
newUserAv = Avatar.objects.filter(valid=True).order_by("date")[:3]
然而,这反过来给了我按日期排序的前三个头像。我确信这很简单,但我在Django文档中找不到它:如何选择 last 三个头像对象而不是前三个?
答案 0 :(得分:100)
在字段名称前加上连字符。
.order_by('-date')
答案 1 :(得分: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
}
上面的结果将按pub_date降序,然后按标题升序排序。
Entry.objects.filter(pub_date__year=2005).order_by('-pub_date', 'headline')
如果我们使用Python序列并查看seq [-5:],我们将首先看到第五个(最后一个)元素。 Django不支持此访问模式(从末尾切片),因为它无法在SQL中高效完成。 ((((((((((((((((((((((((