簡體   English   中英

如何使用Django ORM查詢重寫Raw SQL Query(MySQL)?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM