0
我有一個對話,用戶和消息的簡單消息系統中的對象定義,像這樣: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 = 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
方法實施。
謝謝。連接條件是否應該由消息和對話之間的關係自動生成?爲什麼我需要明確指定它? – gooli
另外,可以在查詢中使用conversation.messages並避免顯式的conversation_id == 1? – gooli