Django コメントで select_related() を「user」フィールドで使用することにより、不要な SQL クエリを削減するという問題を扱っているこのスレッドを読みました。
私が最も気に入っている提案は、独自のコメント モデルを作成し、現在使用されているマネージャーをオーバーライドすることです。
これは私が持っているものです:
#models.py
class LightCommentManager(CommentManager):
def get_query_set(self):
qs = (super(CommentManager, self).get_query_set().select_related('user'))
return qs
class LightComment(Comment):
objects = LightCommentManager()
class meta:
managed = False
これはすべて正常に機能しますが、syncdb を実行すると、Django は引き続き LightComment のテーブルを作成します。マネージャーだけを変更する場合、このテーブルが本当に必要ですか? また、マネージドが false に設定されている場合、Django はなぜテーブルを作成するのですか?
前もって感謝します、