2013-03-08 57 views
5

在現實世界中,多久的人使用的QuerySet方法,如defer()only()? 我想我的手機真的聽過很多關於他們的事情,直到最近我才遇到這些方法。Django的查詢集只()和推遲()

在此處查看文檔。 https://docs.djangoproject.com/en/dev/ref/models/querysets/

+0

這是我第一次聽到這個消息,並感謝信息。 – catherine 2013-03-08 01:08:05

+0

編寫數據遷移通常很有用(使用'migrations.RunPython'),這些都非常方便,並且可以避免在生產中運行大數據庫表遷移時大量來回。 – elias 2018-02-01 17:16:13

回答

10

這些方法使用的大多是優化應用程序的性能時。

一般來說,如果你沒有遇到性能問題,你不需要優化。如果你不需要優化,你不需要這些功能。這是許多高級QuerySet功能的情況,例如select_relatedprefetch_related

至於「他們往往是如何在現實世界中使用的」,這是不是一個真正的回答的問題。他們在需要時使用。如果你不需要它們,請不要使用它們。

1

defer()only()偏於彼此相對的。兩者都收到field_names的清單。 defer()不會查詢作爲參數傳遞給它的列的列表。與此相反,only()將查詢僅列表作爲參數傳遞給它的列。

無論是在一個場景,其中

  • 你想要麼優化使用,避免不必要的列取

  • 你實現你的Python代碼的意見。例如,Admin必須以 顯示X號。用戶必須顯示Y號。 cols,訪問者 必須顯示z no no cols。