我正在尝试获取最新的 Django 模型对象,但似乎无法成功。
这些都不起作用:
obj = Model.objects.filter(testfield=12).latest()
obj = Model.objects.latest().filter(testfield=12)
obj= Model.objects.filter(testfield=12).order_by('-id')[:1]
NewsPostImage.objects.filter(newsPostTarget=img_id).first()
。希望能帮助到你。
请参阅 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
元属性,如 here 所述。
Model.objects.latest('id')
obj= Model.objects.filter(testfield=12).order_by('-id')[:1]
是正确的解决方案
您可以在此处与此进行比较。
https://i.stack.imgur.com/49QK0.png
latest('created')
与 order_by('-created').first()
相同,如果我错了,请纠正我
obj = Model.objects.filter(testfield=12).order_by('id').latest('id')
根据您需要的字段进行过滤 - 在这种情况下是 testfield
Model.objects.filter(testfield=12)
为了获得最新的记录,首先需要对查询集进行排序。这样它就知道根据条件返回最后一条记录。
现在,根据您的主键对结果进行排序 - 大多数情况下 pk=id
Model.objects.filter(testfield=12).order_by('id')
https://docs.djangoproject.com/en/4.0/ref/models/querysets/#order-by
默认情况下,QuerySet 返回的结果按照模型 Meta 中 ordering 选项给出的排序元组进行排序。您可以使用 order_by 方法在每个 QuerySet 的基础上覆盖它。
获得查询集并对其进行排序后。根据您需要的标准获取最新信息 - 在这种情况下是 id。
Model.objects.filter(testfield=12).order_by('id').latest('id')
不定期副业成功案例分享