Sql Django获得最大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

我正在尝试使用django ORM接收最大PK。 我的意思是我想做这个查询:

SELECT MAX(pk_column)
FROM   some_table;
问题是,我需要类似于
some_table\u model.max(pk)
的东西,Django将其转换为上面的查询,以便使用索引,这一点对我很重要。因此:

  • 里面有类似的东西吗
  • 有没有一种方法可以编写通用函数而不针对特定模型
  • 提前感谢您。

    您可以使用获取最大值。例如,如果需要用户表的最大ID:

    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)
    的查询。。。这正是我想要避免的