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