Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Flask Admin:一次在两个表中插入数据_Python_Flask_Flask Sqlalchemy_Flask Admin - Fatal编程技术网

Python Flask Admin:一次在两个表中插入数据

Python Flask Admin:一次在两个表中插入数据,python,flask,flask-sqlalchemy,flask-admin,Python,Flask,Flask Sqlalchemy,Flask Admin,这是我使用flask/flask admin的第一个项目。我们有一个API,使用flask创建,现在正在开发它的管理接口。其中一个要求是在TableA中创建记录时,需要在TableB中创建大量相关记录,其中包括新TableA条目的行ID 我已经创建了一个表单,用于在TableA中输入数据(这很好),但不知道如何将数据自动添加到TableB中。数据提交到表后是否返回新的(TableA)行_ID?有更好的方法吗 有什么想法吗?文档中没有很好的例子,但是您可以覆盖模型的所有CRUD操作,包括创建。您可

这是我使用flask/flask admin的第一个项目。我们有一个API,使用flask创建,现在正在开发它的管理接口。其中一个要求是在TableA中创建记录时,需要在TableB中创建大量相关记录,其中包括新TableA条目的行ID

我已经创建了一个表单,用于在TableA中输入数据(这很好),但不知道如何将数据自动添加到TableB中。数据提交到表后是否返回新的(TableA)行_ID?有更好的方法吗


有什么想法吗?

文档中没有很好的例子,但是您可以覆盖模型的所有CRUD操作,包括创建。您可以自己创建和保存模型(在该模型上有主键),并可以进行任何其他查询和创建任何其他需要的模型

我是用我们的代码拼凑出来的,所以希望它足够完整。让我知道,如果有任何困惑,或它没有回答你的问题


谢谢Rachel,我真的找到了“在模型改变后(自我、形式、模型、被创建)”的方法,这更适合我们的需要,但由于理论是一样的,我接受这是正确的答案。太棒了,我很高兴你找到了你需要的。
from your_models import Employee, Manatee

from flask.ext.admin import Admin
from flask.ext.admin.contrib.sqla import ModelView


class EmployeeAdminView(ModelView):

  # this is called when a model is created
  def create_model(self, form):
    person = Employee() # create new Employee
    form.populate_obj(person)  # use WTForms to populate the model

    # create a new manatee for this new employee
    # everybody needs a manatee for business purposes
    # this assumes there's a sqlalchemy relationship() between the two models

    manatee = Manatee() 
    manatee.name = "Janet"

    person.manatee = manatee 

    self.session.add(person)
    self.session.commit()

    # at this point person.id should be available, so you can use that here
    # to make any other queries you need to

    return True

admin = Admin(app)
admin.add_view(EmployeeAdminView(Employee, db.session))