2016-11-24 11 views
0

タイトルは非常に混乱していますが、それについては悪いですが、私は私の問題を説明します。ref属性からSQLAlchemyに参加する方法

  • Entity1
  • Entity2 Entity1の
  • Entity3

エキスコードEntity2

class Entity1(db.Model): 
    ... 

    entity2 = db.relationship('Entity2', lazy='joined') 

エキスコード:

私は3つのテーブルを持っています

class Entity2(db.Model): 
    ... 

    entity3 = db.relationship('Entity3', lazy='joined') 

Entity1.entity2からEntity3テーブルへの結合を行い、entity3属性にWHERE句を追加したいとします。

私はこの試みた:

query = Entity1.query  
query = query.join(Entity1.entity2.entity3).filter(entity2.entity3.has(code=input)) 

と複数のバリアントを...

以下

答えて

0

は(どちらのバージョン-1またはバージョン2のフィルタ)動作するはずです:

query = (
    Entity1.query 
    .join(Entity2, Entity1.entity2) 
    .filter(Entity2.entity3.has(Entity3.code == input)) # version-1 
    # .join(Entity3, Entity2.entity3).filter(Entity3.code == input) # version-2 
) 
関連する問題