我有一個模型與FK以B型查詢組相關對象的數量
現在我需要做一個查詢集是得到所有B的具有小於5 A的鏈接到他們。
編輯也許我應該提到這是一個Django項目和我正在尋找的是一個QuerySet參考這就是效率不夠高,運行相當多的時間
我已經試過類似:
B.objects.select_related()
,但我不知道如何來限制這種QS到只包括B的,最大出現5次
我有一個模型與FK以B型查詢組相關對象的數量
現在我需要做一個查詢集是得到所有B的具有小於5 A的鏈接到他們。
編輯也許我應該提到這是一個Django項目和我正在尋找的是一個QuerySet參考這就是效率不夠高,運行相當多的時間
我已經試過類似:
B.objects.select_related()
,但我不知道如何來限制這種QS到只包括B的,最大出現5次
使用註釋:
from django.db.models import Count
B.objects.annotate(a_count=Count('a')).filter(a_count__lt=5)
參見:https://docs.djangoproject.com/en/dev/topics/db/aggregation/
感謝一堆,像魅力一樣工作! – nopogo 2012-03-21 14:40:24
你的問題是不是很清楚,但我如何理解它,我認爲你需要的代碼是其中之一:
from django.db.models import Count
b_qs = B.objects.annotate(num_a=Count('authors')).filter(num_a__lt=5)
好吧,祝你好運(即你有什麼嘗試?有什麼問題?你的代碼在哪裏?) – 2012-03-21 14:16:17
你是對的,點擊確認意外好-1在發佈一分鐘內,現在編輯它可悲不能提出任何實際的源代碼 – nopogo 2012-03-21 14:32:21
@nopogo:花一點時間閱讀http:// www .codinghorror.com /博客/ 2012/03 /橡膠鴨問題solving.html。不要急於提出問題。花點時間徹底評估你想要達到的目標,嘗試過的等等,並在發佈之前重新閱讀你的問題。如果你這樣做了,你不會有一個倒退。 – 2012-03-21 14:44:47