これは私の問題で重要な2つのデータベースモデルです。Flask SQL Alchemyでone to many/many to many関係をクエリするには?
私は、多くの関係に1を確立している(会話が複数のメッセージを持つことができます) ユーザーと会話の間に確立多くの関係に多くのもあります。
は、2つのユーザーオブジェクトを取得した後、私はそれが存在する場合は、両方のユーザーが含まれている会話を見つける必要があり、 USER1と user2のを言います。会話オブジェクトを取得した後、 current_convoと言うと、その会話のすべてのメッセージも照会する必要があります。これらの2つのクエリはどのように実行できますか?
class Conversation(db.Model):
__tablename__ = 'conversation'
id = db.Column('id', db.Integer, primary_key=True)
users = db.relationship("User", secondary=relationship_table)
messages = db.relationship("Message", backref="conversation", lazy="dynamic")
class Message(db.Model):
__tablename__ = 'message'
id = db.Column('id', db.Integer, primary_key=True)
message = db.Column('message', db.String)
timestamp = db.Column('timestamp', db.String)
sender = db.Column('sender', db.String)
conversation_id = db.Column(db.Integer, db.ForeignKey('conversation.id'))
class User(db.Model, UserMixin):
__tablename__ = 'user'
id = db.Column('id', db.Integer, primary_key=True)
username = db.Column('username', db.String(100), unique=True, index=True)
password = db.Column('password', db.String(100))
email = db.Column('email', db.String(100), unique=True, index=True)
authenticated = db.Column('authenticated', db.Boolean, default=False)
2人のユーザー間で会話が1つしかないと仮定できますか?同じ2人のユーザー間で複数の会話が行われる場合はありますか? – flyingmeatball
@dirnすでに会話とメッセージの間には1対多の関係があります。私はちょうどそれをクエリを書く方法を知らない。 –
あなたはちょうどuser1とuser2の間で会話したいのですか、それとも他の参加者を含む会話をしたいですか? – dirn