簡體   English   中英

多對多ITSELF關系中的Flask-SQLAlchemy查詢

[英]Flask-SQLAlchemy query in a many to many ITSELF relationship

我與自己之間存在多對多關系,也就是說,我的模型是用戶,一個字段是朋友,也就是用戶。 我已經完成了關系,但是當我嘗試為User的朋友進行查詢時,我的問題來了。 我的模型和關系如下所示:

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

但是它不起作用...請幫忙嗎? 謝謝!

您不需要自己創建聯接。

change lazy ='joined'-將在與父項相同的查詢中“緊急”加載項目。

當您收到對象“猴子”時,您已經可以訪問朋友

monkey = session.query(Monkey).get(user.id)

friends_list =  monkey.friends 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM