[英]sqlalchemy foreign key relationship attributes
我有一个User表和一个Friend表。 Friend表包含两个外键,包括我的User表和状态字段。 我试图能够在Friend对象上调用我的User表中的属性。 例如,我希望能够做一些像friend.name或friend.email这样的事情。
class User(Base):
""" Holds user info """
__tablename__ = 'user'
id = Column(Integer, primary_key=True)
name = Column(String(25), unique=True)
email = Column(String(50), unique=True)
password = Column(String(25))
admin = Column(Boolean)
# relationships
friends = relationship('Friend', backref='Friend.friend_id',primaryjoin='User.id==Friend.user_id', lazy='dynamic')
class Friend(Base):
__tablename__ = 'friend'
user_id = Column(Integer, ForeignKey(User.id), primary_key=True)
friend_id = Column(Integer, ForeignKey(User.id), primary_key=True)
request_status = Column(Boolean)
当我得到friend
对象时我只有2个user_ids
,我想显示每个用户的所有属性,所以我可以在表格中使用这些信息等。我是user_ids
- 仍在尝试学习更多高级功能。 这只是一个较大的Flask项目的片段,这个功能将用于friend
请求等。我试图查找关联对象等,但我很难用它。
任何帮助将不胜感激。
首先,如果您使用的是flask-sqlalchemy
,为什么直接使用sqlalchemy而不是Flask的db.Model
?
我强烈建议使用flask-sqlalchemy
扩展,因为它利用了会话和其他一些整洁的东西。
创建代理便利对象非常简单。 只需在Friend
类中添加与它的关系即可。
class Friend(Base):
__tablename__ = 'friend'
user_id = Column(Integer, ForeignKey(User.id), primary_key=True)
friend_id = Column(Integer, ForeignKey(User.id), primary_key=True)
request_status = Column(Boolean)
user = relationship('User', foreign_keys='Friend.user_id')
friend = relationship('User', foreign_keys='Friend.friend_id')
SQLAlchemy将负责其余的工作,您只需通过以下方式访问用户对象:
name = friend.user.name
如果您计划在每次使用friend
对象时使用user
对象,请在relationship
指定lazy='joined'
。 这样它就可以在单个查询中加载两个对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.