我如何在 Django 的数据库中获取项目的最高 ID?

How do i get the highest ID of an item within a database in djngo?

当我尝试保存新项目时,我需要在数据库中找到 ID 最高的项目,以便将其加 1 并将下一个项目保存在数据库中的订单中。简单地计算数据库中的项目将不起作用,因为如果项目被删除,计数将不正确。

我没有要修复的代码,但伪代码看起来像这样:

look at all the items in the DB
Find the item with the highest ID 
Add one to that number
save the new item with the new highest id in the DB

我正在使用 Django。因此它应该使用 Django 中的查询集和或 python.

Django 模型的字段 id 默认情况下是自动递增的,因此每当您将新对象保存到数据库时,它都会完全按照您的要求进行操作 - 保存 id 比最后一个对象的 id 大 1 的对象。

无论如何,您可以通过多种方式从数据库中检索最新的 ID。 最有效的方法(最简单和最快的数据库查询,因为您只想返回 id 值,而不是整个对象)是说:

latest_id = Model.objects.all().values_list('id', flat=True).order_by('-id').first()

查询集如下所示:

SELECT 'model'.'id' FROM 'model' ORDER BY 'model'.'id' DESC  LIMIT 1; 

all()从数据库中获取模型的所有对象,values_list('id', flat=True)只提取id字段的值(这样可以节省你的时间,因为你不会检索所有的模型字段),order_by('-id') 按 id 降序排列对象,first() 为您提供所需的结果,即最后一个 id。

还有像last() that does the oposite of method first(). It retrieves last whole object of the model from the database or the method latest('id')这样的方法也是一样的。