0

まあ、これは一般的な質問だと思います。

Book と呼ばれるモデルと、Author と呼ばれる別のモデルがあるとします。Author は Book の外部キーです。

簡単ですよね?

BookAdmin ページで、本の著者を表示したい。したがって、 list_display フィールドには次のものがあります。

list_display = ('book_name', 'author'.....)

次に、django-debug-toolbar を使用して、ページの読み込み時に実行されたクエリの数を確認します。約 100 以上のクエリが実行されています。(同じページに100冊のエントリがあります)

「著者」を含めない場合、クエリは 5 つしかありません (そのようなものです)。

余分なクエリが外部キーから来ていることは知っています。

私の質問は、外部キーを扱っているときに実行されるクエリの数を減らすためにとにかくあるということです?

複雑な操作はしたくありません。その外部キーモデルで unicode () メソッドを呼び出したいだけです。

前もって感謝します

4

1 に答える 1

1

まあ、私はそれを自分で見つけました。

これを行う方法は、BookAdmin クラスでqueryset()をオーバーライドすることです。

お気に入り:

def queryset(self, request):
    return Book.objects.all().select_related('author')

それだ。Django は Book をロードすると同時に Author をロードします。したがって、100 を超えるヒットではなく、データベース ヒットのみになります。

于 2013-06-12T16:14:47.717 に答える