SQLAlchemy不同的相关对象

SQLAlchemy不同的相关对象,sqlalchemy,Sqlalchemy,我有一个简单的消息传递系统,其中包含对话、用户和消息对象,定义如下: 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

我有一个简单的消息传递系统,其中包含对话、用户和消息对象,定义如下:

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'))
我希望获得所有参与对话的用户

SQL对我来说很简单:

select distinct users.*
from users inner join messages on messages.author_id = users.id
where messages.conversation_id = 1;

但我不知道如何使用SQLAlchemy的语法来实现这一点,所以我只能返回对象,而不仅仅是字段。理想情况下,我希望将其实现为对话中的
get\u authors
方法

谢谢。连接条件不是应该根据消息和会话之间的关系自动生成吗?为什么我需要显式地指定它?另外,可以在查询中使用conversation.messages并避免显式的conversation_id==1?
session.query(User).distinct().\
    join(Message, Message.author_id == User.id).\
    filter(Message.conversation_id == 1)