如何将子实例添加到一对多的“多”端

时间:2015-01-28 02:26:32

标签: flask flask-restless

我的flask / restless应用程序中有两个模型:Blueprint和Workload 蓝图应该有一组工作量。

以下是模型:

class Blueprint(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(120), unique=True)
    description = db.Column(db.String(250), unique=True)


class Workload(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(120), unique=True)
    description = db.Column(db.String(250), unique=True)
    image = db.Column(db.String(120), unique=True)
    flavor = db.Column(db.String(120), unique=True)
    blueprint_id = db.Column(db.Integer, db.ForeignKey('blueprint.id'))
    blueprint = db.relationship(Blueprint, backref='workloads')


db.create_all()

# Create the Flask-Restless API manager.
manager = flask.ext.restless.APIManager(app, flask_sqlalchemy_db=db)

# Create API endpoints, which will be available at /api/<tablename> by
# default. Allowed HTTP methods can be specified as well.
manager.create_api(Blueprint, methods=['GET', 'PUT', 'POST', 'DELETE'])
manager.create_api(Workload, methods=['GET', 'PUT', 'POST', 'DELETE'])

使用curl或python的正确语法是将Workload实例添加到Blueprint的“工作负载”集合中吗?

1 个答案:

答案 0 :(得分:1)

最后找到了答案:将一个Workload作为子项添加到Blueprint:curl --request PATCH -H“Content-Type:application / json”-d'{“blueprint”:{“id”:1}} 'http://127.0.0.1:5000/api/workload/1鉴于上面的模型定义,这完全符合我们的要求。然后,当我们运行curl -i -X GET -H“Accept:application / json”http://127.0.0.1:5000/api/blueprint/1时,我们得到一个特定的蓝图以及属于它的工作负载列表