我有用户和论坛表。用户在许多论坛中做出了贡献,而论坛中有许多用户
我的数据库表
users
+----+------------+
| id | name |
+----+------------+
| 1 | user_one |
| 2 | user_two |
| 3 | user_three |
+----+------------+
forums
+----+--------+
| id | name |
+----+--------+
| 1 | forum1 |
| 2 | forum2 |
| 3 | forum3 |
+----+--------+
users_forums
+---------+----------+
| user_id | forum_id |
+---------+----------+
| 1 | 1 |
| 1 | 3 |
| 3 | 2 |
| 2 | 1 |
+---------+----------+
答案 0 :(得分:0)
在SQLAlchemy UserModel中,您需要使用如下关系:
forum_id = db.Column(db.Integer, db.ForeignKey("forum.id"), nullable=False)
forum = db.relationship("ForumModel")
然后在您的ForumModel中,将它们链接为类似的内容:
users = db.relationship("UserModel", lazy="dynamic")
在这里https://flask-sqlalchemy.palletsprojects.com/en/2.x/models/#many-to-many-relationships
了解更多答案 1 :(得分:0)
Ref-https://docs.sqlalchemy.org/en/13/orm/basic_relationships.html#many-to-many。
您可以创建 UserForum 模型或 users_forums 表以在关系中传递辅助选项。
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import Column, Integer, String, ForeignKey
from sqlalchemy.orm import relationship
db = SQLAlchemy()
class User(db.Model):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(24))
forums = relationship("Forum", secondary='users_forums')
class Forum(db.Model):
__tablename__ = 'forums'
id = Column(Integer, primary_key=True)
name = Column(String(24))
users = relationship("User", secondary='users_forums')
class UserForum(db.Model):
__tablename__ = 'users_forums'
user_id = Column(Integer, ForeignKey('users.id'))
forum_id = Column(Integer, ForeignKey('forums.id'))
用法如下
user = User.query.get(1)
print(user)
<User 1>
forums = user.forums
print(forums)
[<Forum 1>, <Forum 2>]