2017-01-14 4 views
0

У меня есть много разных отношений, и я пытаюсь сделать запрос для возврата одного или всех объектов, но max, который я могу получить, является идентификатором этого объекта, который является внешним ключом моя таблица классов ассоциации.От многих до многих запросов для объектов

Это мой стол

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() 

, но все это возвращает массив с все политик столбец моей таблицы Ассоциации. Есть ли какой-либо способ вернуть Политические объектов с этими идентификаторами?

С наилучшими пожеланиями

ответ

0

Я нашел решение:

Если кто-нибудь спрашивает, как запросить что-то конкретное, используя ассоциации Object Table, здесь идет:

pol = Politic.query.filter(Politic.children.any(proposal=idProposal)).all() 
Смежные вопросы