在 Django ORM 中,select_lated 和 prefetch_lated 方法在管理資料庫中的關係方面具有不同的用途。
select_lated
Django 的 select_lated 方法透過執行 SQL 連線在資料庫查詢期間取得相關模型資料。它有效地檢索相關模型的選定字段,最大限度地減少後續查詢的需要。此方法特別適合涉及外鍵或 OneToOneField 連接的關係。
prefetch_lated
與 select_lated 不同,prefetch_lated 不執行 SQL 連線。相反,它執行單獨的查詢來檢索相關模型。然後在 Python 中「連接」資料。此方法對於涉及 ManyToManyFields 或反向外鍵連接的關係很有用。
範例
考慮以下模型設定:
<code class="python">class Author(models.Model): name = models.CharField(max_length=100) class Book(models.Model): author = models.ForeignKey(Author)</code>
取得使用select_lated 取得作者及其相關書籍:
<code class="python">author = Author.objects.select_related('book_set').get(pk=1) for book in author.book_set.all(): print(book.title)</code>
<code class="python">authors = Author.objects.prefetch_related('book_set').all() for author in authors: for book in author.book_set.all(): print(book.title)</code>
以上是何時使用 Django ORM 的 select_lated 與 prefetch_lated?的詳細內容。更多資訊請關注PHP中文網其他相關文章!