2017-01-14 16 views
0

多対多の関係があり、1つまたはすべてのオブジェクトを戻す問合せを作成しようとしていますが、取得できる最大値はそのオブジェクトの外部キーであるIDです。私の関連クラステーブル。オブジェクトの多対多問合せ

は、これは私の関連クラスのテーブル

class PolPropAssociation(db.Model): 
    __tablename__ = 'polprop' 
    politician = db.Column(db.Integer, db.ForeignKey('politics.idPolitician'), primary_key=True) 
    proposal = db.Column(db.Integer, db.ForeignKey('proposals.idProposal'), primary_key=True) 
    relation = db.Column(db.String(120)) 
    parent = db.relationship("Politic", back_populates="children") 
    child = db.relationship("Proposal", back_populates="parents") 
    draft = db.Column(db.Boolean, default=True) 

    def __init__(self, relation): 
     self.relation = relation.title() 


class Politic(db.Model): 
    __searchable__ = ['publicName', 'completeName'] 
    __tablename__ = 'politics' 

    idPolitician = db.Column(db.Integer, primary_key=True) 
    publicName = db.Column(db.String(150)) 
    completeName = db.Column(db.String(300)) 
    startDate = db.Column(db.Date, default=datetime.datetime.utcnow) 
    endDate = db.Column(db.Date, default=datetime.datetime.utcnow) 
    positions=db.relationship('Position',backref='pos_politic',lazy='select') 
    draft = db.Column(db.Boolean, default = True) 
    biolink = db.Column(db.String(200)) 
    flag = db.relationship('Flag', cascade="all, delete", backref='politics', lazy='dynamic') 
    children = db.relationship("PolPropAssociation", back_populates="parent", lazy='dynamic') 


class Proposal(db.Model): 
    __tablename__ = 'proposals' 

    idProposal = db.Column(db.Integer, primary_key=True) 
    dateProposal = db.Column(db.Date, default=datetime.datetime.utcnow) 
    description = db.Column(db.String(500)) 
    linkProposal = db.Column(db.String(200)) 
    idCategory = db.Column(db.Integer, db.ForeignKey('category.idcategory')) 
    idProposalState = db.Column(db.Integer, db.ForeignKey('proposalstate.idproposalstate')) 
    draft = db.Column(db.Boolean, default = True) 
    flag = db.relationship('FlagProposal', backref='proposals', lazy='dynamic') 
    parents = db.relationship("PolPropAssociation", back_populates="child", lazy='dynamic') 

であり、私は与えられたidProposalと政治家のすべての提案を返すようにしたい:

proposal = Proposal.query.filter_by(idProposal=idProposal).first() 
politicians = proposal.parents.all() 

をそれが返すすべてが持つ配列でありますすべて政治家私の関連テーブルの列。 ポリティックオブジェクトにこれらのIDを返す方法はありますか?

敬具

答えて

0

私は解決策を見つけた:

オブジェクトアソシエーションテーブルを使用して、特定の何かを照会する方法を求めて誰もがある場合、ここでそれが行く:

pol = Politic.query.filter(Politic.children.any(proposal=idProposal)).all() 
関連する問題