我有一个简单的消息传递系统,其中定义了“对话”,“用户”和“消息”对象,如下所示:
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String)
class Conversation(db.Model):
id = db.Column(db.Integer, primary_key=True)
class Message(db.Model):
id = db.Column(db.Integer, primary_key=True)
text = db.Column(db.String)
author = db.relationship('User')
conversation = db.relationship('Conversation', backref=db.backref('messages', lazy='dynamic'))
Run Code Online (Sandbox Code Playgroud)
我想让所有参与对话的用户。
在SQL中对我来说很容易:
select distinct users.*
from users inner join messages on messages.author_id = users.id
where messages.conversation_id = 1;
Run Code Online (Sandbox Code Playgroud)
但是我无法弄清楚如何使用SQLAlchemy的语法做到这一点,所以我不仅可以获取字段,还可以获取对象。理想情况下,我想将其实现为get_authors
“对话”方法。
session.query(User).distinct().\
join(Message, Message.author_id == User.id).\
filter(Message.conversation_id == 1)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1339 次 |
最近记录: |