如何告诉Django ORM反转查询结果的顺序?

时间:2009-09-24 09:39:10

标签: python django

为了理解对Django模型的查询,我一直试图通过以下查询获得最后3个有效的Avatar模型:

newUserAv = Avatar.objects.filter(valid=True).order_by("date")[:3]

然而,这反过来给了我按日期排序的前三个头像。我确信这很简单,但我在Django文档中找不到它:如何选择 last 三个头像对象而不是前三个?

2 个答案:

答案 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中高效完成。 ((((((((((((((((((((((((