Django获得最大PK

时间:2016-10-09 14:05:33

标签: sql django orm

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

SELECT MAX(pk_column)
FROM   some_table;

问题是我想要像some_table_model.max(pk)这样的东西,对我来说重要的是Django会将它翻译成上面的查询,所以它会使用索引。所以:

  1. 是否有类似的内容?
  2. 有没有办法在没有针对特定模型的情况下编写泛型函数?
  3. 提前谢谢。

3 个答案:

答案 0 :(得分:2)

您可以使用Sebastian Proske said in the comments获取最大值。例如,如果您想要Users表的最大ID:

{'id__max': 10}

这会给你malloc()或任何最大的ID。

答案 1 :(得分:0)

您可以使用此

YourModel.objects.all().order_by(-id).first().id

答案 2 :(得分:0)

这有点旧,但我遇到了同样的问题,可以使用latest来实现。

之类的东西
try:
    return some_table_model.ojects.latest('pk').pk
except some_table_model.DoesNotExist:
    return 0

这当然是假设你的pk是数字而不是复合。否则,您可以使用id或上面建议的其他字段