我有一个这样的模型。
class Message(db.Model, CRUDMixin):
id = db.Column(db.Integer, primary_key=True, nullable=False)
from_id = db.Column(db.Integer, db.ForeignKey("user.id"), nullable=False)
to_id = db.Column(db.Integer, db.ForeignKey("user.id"), nullable=False)
from_user = db.relationship('User', foreign_keys=[from_id], uselist=False)
to_user = db.relationship('User', foreign_keys=[to_id],
uselist=False)
date = db.Column(db.TIMESTAMP(), nullable=False)
content = db.Column(db.String(500), nullable=False)
room_id = db.Column(db.Integer, db.ForeignKey("room.id"), nullable=False)
我想要实现的是,对于给定的user_id
,我想获取该用户已向其发送消息或已从哪些用户接收消息的用户列表。
例如:
假设有 3 个用户,id 分别为 1,2,3
消息已发送
1 -> 2
2 -> 1
1 -> 3
3 -> 2
现在,对于用户 id 1,我想获取 id 2 和 3 的用户列表。对于用户 2,我想要 1 和 3。
如何实现这一目标?
提前致谢。
最佳答案
实现您所追求的目标的一种方法是合并符合您条件的用户。
user_id = 1
messaged_to = User.query.\
join(Message, Message.to_id == User.id).\
filter(Message.from_id == user_id)
messages_from = User.query.\
join(Message, Message.from_id == User.id).\
filter(Message.to_id == user_id)
query = messaged_to.union(messages_from)
关于python - 使用 SQLalchemy 从表中获取用户列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47177863/