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' 字段将包含其子任务的信息。

Python Flask 任务表设计:无限子任务层级和最高级任务获取

原文地址: https://www.cveoy.top/t/topic/peQA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录