在Django中使用过滤器获取最新记录

时间:2013-03-28 06:37:22

标签: python django django-models django-queryset

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

这些都不起作用:

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

5 个答案:

答案 0 :(得分:90)

请参阅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中指定的字段。

答案 1 :(得分:77)

obj= Model.objects.filter(testfield=12).order_by('-id')[0]

答案 2 :(得分:15)

latest的确适用于日期字段(它可能也适用于其他总排序类型,但不确定)。您可以在不指定字段名称的情况下使用它的唯一方法是设置get_latest_by元属性,如上所述here

答案 3 :(得分:6)

last() latest()

最后使用():

ModelName.objects.last()

使用latest():

ModelName.objects.latest('id')

答案 4 :(得分:5)

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