Flask SQLAlchemy: 多对多关联 - 任务负责人与执行人
在 Flask 中,你可以使用 SQLAlchemy 来定义和管理数据库模型。为了实现任务表的负责人和执行人同时关联到用户表,你可以定义三个模型:User、Task 和 Assignment。
下面是一个示例代码:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100))
class Task(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100))
assignee_id = db.Column(db.Integer, db.ForeignKey('user.id'))
assignee = db.relationship('User', foreign_keys=[assignee_id])
executor_id = db.Column(db.Integer, db.ForeignKey('user.id'))
executor = db.relationship('User', foreign_keys=[executor_id])
class Assignment(db.Model):
id = db.Column(db.Integer, primary_key=True)
task_id = db.Column(db.Integer, db.ForeignKey('task.id'))
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
user = db.relationship('User', foreign_keys=[user_id])
if __name__ == '__main__':
db.create_all()
app.run()
在上面的代码中,我们定义了三个模型:User、Task 和 Assignment。User 模型代表用户,Task 模型代表任务,Assignment 模型代表任务的负责人和执行人之间的关联关系。
Task 模型中有两个外键字段:assignee_id 和 executor_id,它们分别关联到 User 模型的 id 字段。同时,我们使用 db.relationship() 来定义 assignee 和 executor 属性,通过 foreign_keys 参数来指定外键字段。
Assignment 模型中有两个外键字段:task_id 和 user_id,分别关联到 Task 模型和 User 模型的 id 字段。同样,我们使用 db.relationship() 来定义 user 属性,通过 foreign_keys 参数来指定外键字段。
在你的应用程序中,你可以使用这些模型来处理任务表和用户表之间的关系。例如,你可以通过查询任务的 assignee 和 executor 属性来获取任务的负责人和执行人的详细信息。
这只是一个简单示例,你可以根据你的实际需求对模型进行更多的定制和扩展。希望对你有所帮助!
原文地址: https://www.cveoy.top/t/topic/peXY 著作权归作者所有。请勿转载和采集!