Conversation、User、および Message オブジェクトを次のように定義した単純なメッセージング システムがあります。
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_authors
理想的には、会話のメソッドとして実装したいと思います。