1
我有一个多对多的关系,这意味着,我的模型是用户和一个字段是朋友,这将是用户。我已经完成了它的关系,但是当我尝试为用户的朋友进行查询时,我的问题就出现了。我的模型和关系是这样的:Flask-SQLAlchemy在多对多的自我关系查询
friendship = db.Table('friends',
Column('friend_id', db.Integer, db.ForeignKey('monkeys.id')),
Column('myfriend_id', db.Integer, db.ForeignKey('monkeys.id'))
)
class Monkey (db.Model):
_tablename__ = "monkeys"
id = Column(Integer, primary_key=True)
username = Column(String(50), unique = True)
email = Column(String(120), unique = True)
password = Column(String(50))
date = Column (DateTime(), default=datetime.now())
friends = relationship('Monkey',
secondary = friendship,
primaryjoin = (friendship.c.friend_id == id),
secondaryjoin = (friendship.c.myfriend_id == id),
backref = backref('friendship', lazy = 'dynamic'),
lazy = 'dynamic')
而且从德认为,如果我想要做的查询,我已经试过的东西
friends_list = Monkey.query.join(Monkey.friends).filter(Monkey.id == user.id).all()
卜它不工作...任何请帮助?谢谢!
但我想使用其他功能在查询中,为“分页”和“ORDER_BY”,它不与呼叫 – alvgarvilla
你工作之前没有提到这个:)。 而不是使用'友谊= db.Table()'创建'类友谊(db.Model):'。 这在sqlalchemy [documentation](http://docs.sqlalchemy.org/en/rel_0_8/orm/relationships.html#association-object) – qwetty
中解释,然后通过'friends = session.query(Friendship ).filter(Friendship.friend_id == user.id).all()' – qwetty