2017-01-14 188 views
0

我有一個多對多的關係,我試圖做一個查詢來返回一個或所有的對象,但最大我可以得到的是該對象的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對象返回給Politic對象?

問候

回答

0

我找到了解決辦法:

如果有任何人問如何使用對象關聯表來查詢一些具體的事情,這裏有雲:

pol = Politic.query.filter(Politic.children.any(proposal=idProposal)).all()