Asi*_*nox 122
latest(field_name=None)使用作为日期字段提供的field_name,按日期返回表中的最新对象.此示例根据以下
pub_date字段返回表中的最新条目 :Run Code Online (Sandbox Code Playgroud)Entry.objects.latest('pub_date')
juj*_*ule 73
你可以简单地做这样的事情,使用reverse():
queryset.reverse()[0]
另外,请注意Django文档中的此警告:
...请注意,
reverse()通常只应在具有已定义排序的QuerySet上调用(例如,在查询定义默认排序的模型时或使用时order_by()).如果没有为给定定义这样的排序QuerySet,则调用reverse()它没有实际效果(在调用之前排序是未定义的reverse(),并且之后将保持未定义).
pan*_*ore 32
Django> = 1.6
添加了QuerySet方法first()和last(),它们是返回匹配过滤器的第一个或最后一个对象的便捷方法.如果没有匹配的对象,则返回None.
hak*_*ash 31
最简单的方法是:
books.objects.all().last()
您还可以使用它来获取第一个条目,如下所示:
books.objects.all().first()
Rav*_*mar 23
获取First对象:
ModelName.objects.first()
要获取最后的对象:
ModelName.objects.last()
你可以使用过滤器
ModelName.objects.filter(name='simple').first()
这适合我.
当queryset已经用尽时,您可以这样做以避免另一个数据库提示-
last = queryset[len(queryset) - 1] if queryset else None
不要使用try...except...。
Django IndexError在这种情况下不会抛出异常。
抛出AssertionError或ProgrammingError(当您使用-O选项运行python时)
您可以使用Model.objects.last()或Model.objects.first()。如果未定义ordering,则查询集将根据主键进行排序。如果你想要排序行为查询集那么你可以参考最后两点。
如果您正在考虑这样做,Model.objects.all().last()请检索Model.objects.all().first()查询集中的最后一个元素并检索第一个元素,或者filters不假思索地使用。然后请参阅下面的一些注意事项。
这里要注意的重要部分是,如果您的模型中没有包含任何数据,ordering则数据可以按任何顺序排列,并且您将获得一个随机的最后一个或第一个元素,这是意料之外的。
例如。假设您有一个名为 的模型,Model1该模型有 2 列id和item_count10 行,id 为 1 到 10。[没有定义顺序]
如果你像这样获取 Model.objects.all().last() ,你可以从 10 个元素的列表中获取任何元素。是的,它是随机的,因为没有默认顺序。
那么可以做什么呢?
ordering根据模型上的任何一个或多个字段进行定义。它也存在性能问题,也请检查。参考:这里order_by。像这样:Model.objects.order_by('item_count').last()| 归档时间: | 
 | 
| 查看次数: | 66366 次 | 
| 最近记录: |