25

defer()現実の世界では、や などの QuerySet メソッドをどのくらいの頻度で使用しonly()ますか? 私はそれらについてあまり聞いたことがないと思いますが、これらの方法に出くわしたのはつい最近のことです。

こちらのドキュメントを参照してください。 https://docs.djangoproject.com/en/dev/ref/models/querysets/

4

2 に答える 2

32

これらのメソッドは、アプリケーションのパフォーマンスを最適化するときに主に使用されます。

一般的に言えば、パフォーマンスの問題がなければ、最適化する必要はありません。最適化する必要がなければ、これらの関数は必要ありません。これは、 や などの多くの高度な機能を備えたケースQuerySetです。select_relatedprefetch_related

「実世界でどれくらいの頻度で使用されているか」については、答えられる質問ではありません。それらは必要なときに使用されます。それらが必要ない場合は、使用しないでください。

于 2013-03-08T01:13:08.963 に答える
20

defer()only()、やや対照的です。どちらも のリストを受け取りますfield_namesdefer()引数として渡された列のリストを照会しません。それとは反対に、only()引数として渡された列のリストのみを照会します。

どちらもシナリオで使用されます。

  • 不要な列のフェッチを回避することにより、いずれかの最適化が必要です

  • Pythonコードにビューを実装しています。例: 管理者は X 番号を表示する必要があります。列のうち、ユーザーは表示されなければなりません Y no. of cols, ビジターには z no of cols を表示する必要があります。

于 2016-11-02T07:34:16.777 に答える