114

我正在尝试获取最新的 Django 模型对象,但似乎无法成功。

这些都不起作用:

obj = Model.objects.filter(testfield=12).latest()
obj = Model.objects.latest().filter(testfield=12)
4

6 回答 6

140

查看来自 django 的文档: https ://docs.djangoproject.com/en/dev/ref/models/querysets/#latest

您需要在 latest() 中指定一个字段。例如。

obj= Model.objects.filter(testfield=12).latest('testfield')

或者,如果您的模型的 Meta 指定 get_latest_by,您可以field_name省略earliest() or latest(). Django 将get_latest_by默认使用中指定的字段。

于 2014-02-24T03:31:40.250 回答
116
obj= Model.objects.filter(testfield=12).order_by('-id')[0]
于 2013-03-28T06:48:39.157 回答
48

最后一个() 最新的()

最后注册():

ModelName.objects.last()

使用最新():

ModelName.objects.latest('id')
于 2017-09-08T07:12:33.227 回答
20

latest真正设计用于处理日期字段(它可能也适用于其他全排序类型,但不确定)。并且您可以在不指定字段名称的情况下使用它的唯一方法是设置get_latest_bymeta 属性,如此所述。

于 2013-03-28T06:55:42.180 回答
6

obj= Model.objects.filter(testfield=12).order_by('-id')[:1]是正确的解决方案

于 2017-06-15T19:13:44.323 回答
1

您可以在此处与此进行比较。

图片

latest('created')order_by('-created').first() 如果我错了,请纠正我

于 2020-12-24T08:42:28.973 回答