我正在尝试获取最新的 Django 模型对象,但似乎无法成功。
这些都不起作用:
obj = Model.objects.filter(testfield=12).latest()
obj = Model.objects.latest().filter(testfield=12)
我正在尝试获取最新的 Django 模型对象,但似乎无法成功。
这些都不起作用:
obj = Model.objects.filter(testfield=12).latest()
obj = Model.objects.latest().filter(testfield=12)
查看来自 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
默认使用中指定的字段。
obj= Model.objects.filter(testfield=12).order_by('-id')[0]
latest
真正设计用于处理日期字段(它可能也适用于其他全排序类型,但不确定)。并且您可以在不指定字段名称的情况下使用它的唯一方法是设置get_latest_by
meta 属性,如此处所述。
obj= Model.objects.filter(testfield=12).order_by('-id')[:1]
是正确的解决方案