0

Elixir 0.7.1 と SQLAlchemy 0.7.8 を使用して、次のような多対多の関係を持つモデルを作成しました。

from elixir import *

class MyModel(Entity):
    name = Field(Unicode(30))
    related = ManyToMany('MyModel')

さて、これらについて任意のクエリがある場合は、次のように言います

q1 = MyModel.query.filter(MyModel.name.like("%Bob%"))

次に、 内のオブジェクトのいずれかに関連する個別の MyModel オブジェクトのフラット リストを返す別のクエリを作成したいと考えていますq1。つまり、もし私が持っていたら

q1.all() == [m1, m2, m3]

次に、 、、の結合で構成されるフラット リストを返すクエリq2(おそらくサブクエリとして) が必要です。これは、最初に実行してから、残りを Python リスト操作にドロップダウンするだけで簡単に実行できますが、多くのオブジェクトを返す場合は、より高速な方法があるようです。これを行う方法について何か考えはありますか?多対多の関係のために、Elixir によって生成された中間テーブルに対して何らかの結合を使用する必要がありますか?q1m1.relatedm2.relatedm3.relatedq1q1

ありがとう!

4

1 に答える 1

0

結合テーブルを明示的に参照する必要のない簡単な解決策があるようです:

q2 = MyModel.query.join(q1.subquery(), MyModel.related)
于 2013-07-02T00:18:41.300 に答える