Sql Django获得最大PK
我正在尝试使用django ORM接收最大PK。 我的意思是我想做这个查询:Sql Django获得最大PK,sql,django,orm,Sql,Django,Orm,我正在尝试使用django ORM接收最大PK。 我的意思是我想做这个查询: SELECT MAX(pk_column) FROM some_table; 问题是,我需要类似于some_table\u model.max(pk)的东西,Django将其转换为上面的查询,以便使用索引,这一点对我很重要。因此: 里面有类似的东西吗 有没有一种方法可以编写通用函数而不针对特定模型 提前感谢您。您可以使用获取最大值。例如,如果需要用户表的最大ID: from django.contrib.auth
SELECT MAX(pk_column)
FROM some_table;
问题是,我需要类似于some_table\u model.max(pk)
的东西,Django将其转换为上面的查询,以便使用索引,这一点对我很重要。因此:
from django.contrib.auth.models import User
from django.db.models import Max
users = User.objects.all()
max = users.aggregate(Max('id'))
这将为您提供{'id\uuu max':10}
或任何最大的id。您可以使用它
YourModel.objects.all().order_by(-id).first().id
这有点老了,但我遇到了同样的问题,可以使用
最新的
实现。差不多
try:
return some_table_model.ojects.latest('pk').pk
except some_table_model.DoesNotExist:
return 0
这当然是假设你的主键是数字而不是复合的。否则,您可以使用
id
或上面建议的其他字段您知道它转换为什么查询吗?您可以通过执行sone_queryset.query来获取任何查询的SQL,但我不确定在使用聚合后如何执行相同的操作……是的,我知道我可以获取查询。我只是想知道您是否知道聚合的查询将是什么。有点奇怪的是,使用aggregate
生成的查询与我希望的查询类似。此方法将转换为使用order by
和rownum=1(限制1)
的查询。。。这正是我想要避免的