我正在尝试获取最新的Django模型对象,但似乎无法成功。
这些都不起作用:
obj = Model.objects.filter(testfield=12).latest()
obj = Model.objects.latest().filter(testfield=12)
答案 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)
答案 4 :(得分:5)
obj= Model.objects.filter(testfield=12).order_by('-id')[:1]
是正确的解决方案