Many-to-Manyで、結合したクエリを一発で投げたい

25 views
Skip to first unread message

unacowa

unread,
Oct 1, 2009, 11:52:12 PM10/1/09
to django-ja
ManyToManyFieldを使っている時に、参照先のモデル
(以下例では、Author ) を結合した状態でのクエリを出したいです。

1対多のリレーションでは、select_related() を使って、参照先を結合して、
一回のクエリで済ませる事ができるのですが、多対多の場合、
その方法がわかりません。

どなたかご存知の方、ご回答お願いいたします。

== 詳細 ==
無関係の方のページですが、
http://www.jjude.com/2008/05/24/handling-manytomany-field-in-django/
を例に使わせていただきます。

リンク先に書かれている
{% for item in query_list %}
{{item.title}}
{% for author in item.authors.all %}
    {{author.name}}
{%endfor %}
{% endfor %}
という方法では、item(Book) の数だけAuthor へのクエリが発生してしまい、
itemの数に比例してコストがかかり、パフォーマンスが悪化してしまいます。

これを、あらかじめ、LEFT INNER JOIN して
「Authorモデルのリストを持つBookモデルのリスト」
を得るためには、どのような方法があるのでしょうか。

ご存知の方、ご教授お願いいたします。
Reply all
Reply to author
Forward
0 new messages