我想用django ORM來接收最大的PK。 馬克斯我的意思是我想做到這一點查詢:Django得到最大的PK
SELECT MAX(pk_column)
FROM some_table;
的事情是,我想是這樣some_table_model.max(pk)
,使Django會在它上面轉化爲查詢,以便它會用指數法對我來說是很重要的。所以:
- 是否有類似的東西建立?
- 有沒有辦法編寫一個通用函數,而不是爲特定的模型?
在此先感謝您。
我想用django ORM來接收最大的PK。 馬克斯我的意思是我想做到這一點查詢:Django得到最大的PK
SELECT MAX(pk_column)
FROM some_table;
的事情是,我想是這樣some_table_model.max(pk)
,使Django會在它上面轉化爲查詢,以便它會用指數法對我來說是很重要的。所以:
在此先感謝您。
您可以使用aggregation來獲得最大值。例如,如果你想你的用戶表的最大ID:
from django.contrib.auth.models import User
from django.db.models import Max
users = User.objects.all()
max = users.aggregate(Max('id'))
這將使你{'id__max': 10}
或任何偉大的ID是。
您可以使用此
YourModel.objects.all().order_by(-id).first().id
這個方法會轉化爲一個使用'order by'和'rownum = 1(limit 1)'的查詢語句......這實際上是我想要避免的 –
這是有點老了,但我遇到了這個同樣的問題,它可以使用latest
實現。像
try:
return some_table_model.ojects.latest('pk').pk
except some_table_model.DoesNotExist:
return 0
這當然假設你的PK是數字,而不是複合。否則,你可以使用id
或其他一些領域上面
你碰巧知道查詢其轉換爲建議? –
您可以通過執行sone_queryset.query獲得任何查詢的SQL,但是我不確定如何在使用聚合後執行相同操作... –
是的我知道我可以查詢。我只是想知道你是否知道'aggregate'的查詢是什麼。使用'aggregate'的東西會產生一個像我希望的那樣的查詢,這有點奇怪。 –