获取查询集中的最后一条logging

如何检索某个查询集中的最后一条logging?

你可以简单的做这样的事情,使用reverse()

 queryset.reverse()[0] 

另外,请注意Django文档中的这个警告:

…注意reverse()通常只能在具有已定义顺序的QuerySet上调用(例如,在查询定义默认顺序的模型时,或者在使用order_by() )。 如果没有为给定的QuerySet定义这样的顺序,那么调用reverse()就没有实际效果(在调用reverse()之前,顺序是未定义的,并且在之后将保持未定义)。

Django文档 :

latest(field_name=None)使用作为date字段提供的field_name按date返回表中的最新对象。

此示例根据pub_date字段返回表中的最新条目:

 Entry.objects.latest('pub_date') 

Django> = 1.6

添加了QuerySet方法first()和last(),它们是方便的方法,返回匹配filter的第一个或最后一个对象。 如果没有匹配的对象,则返回None。

最简单的方法是:

 books.objects.all().last() 

你也可以用这个来获得第一个条目:

 books.objects.all().first() 

获取第一个对象:

 ModelName.objects.first() 

要获得最后一个对象:

 ModelName.objects.last() 

你可以使用filter

 ModelName.objects.filter(name='simple').first() 

这对我有用。

如果使用django 1.6或更高版本,现在引入新的api会更容易 –

 Model.object.earliest() 

它会给最新的()与反向。

ps – 我知道它的老问题,我把这个问题推到某人身上,他们知道这个新function,而不是最终使用旧的方法。

当查询集已经用尽,你可以这样做,以避免另一个数据库提示 –

 last = queryset[len(queryset) - 1] if queryset else None 

不要使用try...except...
在这种情况下,Django不会抛出IndexError
它抛出AssertionErrorProgrammingError (当你运行与-O选项的Python)

最简单的方法,无需担心当前的顺序,将查询集转换为列表,以便您可以使用Python的正常负向索引。 像这样:

 list(User.objects.all())[-1]