Python Flask 任务表设计:无限子任务层级和最高级任务获取
Python Flask 任务表设计:无限子任务层级和最高级任务获取
在设计任务表时,可以使用树状结构来表示任务的层级关系。每个任务可以包含一个父任务和多个子任务,可以使用一个字段来记录父任务的 id。
示例代码如下:
from flask import Flask, request, jsonify
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///tasks.db'
db = SQLAlchemy(app)
class Task(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100))
parent_id = db.Column(db.Integer, db.ForeignKey('task.id'))
children = db.relationship('Task', backref=db.backref('parent', remote_side=[id]))
def to_dict(self):
return {
'id': self.id,
'name': self.name,
'parent_id': self.parent_id,
'children': [child.to_dict() for child in self.children]
}
@app.route('/tasks', methods=['GET'])
def get_tasks():
tasks = Task.query.filter_by(parent_id=None).all()
return jsonify([task.to_dict() for task in tasks])
@app.route('/tasks', methods=['POST'])
def create_task():
data = request.get_json()
name = data.get('name')
parent_id = data.get('parent_id')
task = Task(name=name, parent_id=parent_id)
db.session.add(task)
db.session.commit()
return jsonify(task.to_dict()), 201
if __name__ == '__main__':
db.create_all()
app.run()
这样,你可以通过发送 POST 请求来创建任务,指定父任务的 id。通过发送 GET 请求来获取所有任务,每个任务的'children' 字段将包含其子任务的信息。
例如,你可以发送以下 POST 请求来创建任务:
POST /tasks
{
'name': '任务1',
'parent_id': null
}
然后发送以下 POST 请求来创建子任务:
POST /tasks
{
'name': '子任务1',
'parent_id': 1
}
通过发送 GET 请求来获取所有任务:
GET /tasks
这将返回一个任务列表,其中每个任务的'children' 字段将包含其子任务的信息。
原文地址: https://www.cveoy.top/t/topic/peQA 著作权归作者所有。请勿转载和采集!