2013-07-22 97 views

回答

2

首先,annotate作者queryset與書的數量。

from django.db.models import Count 
authors = Author.objects.annotate(num_books=Count('librarybook') 

您還沒有展示您的Django模型,所以我不得不猜測'librarybook'是反向關係的正確名稱。

然後在num_books上過濾以找到具有兩本以上書籍的作者。

authors = Author.objects.annotate(num_books=Count('librarybook').filter(num_books__gt=2) 

最後,切片查詢集將其限制爲3個結果。

authors = Author.objects.annotate(num_books=Count('librarybook').filter(num_books__gt=2)[:3] 

然後,您可以遍歷結果作者並訪問書的數量。

for author in authors: 
    print author.name, author.num_books