[英]How to rewrite Raw SQL Query (MySQL) with Django ORM query?
如何使用Django ORM查詢重寫下一個Raw SQL Query(MySQL)?
mysql> select author_id,
count(*) c
from library_books
group by author_id
having c>2
limit 3;
+---------------+----+
| author_id | c |
+---------------+----+
| 0 | 39 |
| 1552 | 17 |
| 1784 | 8 |
+---------------+-----
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.