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

时间:2014-08-07 12:06:27

标签: python flask flask-sqlalchemy flask-admin

这是我第一个使用flask / flask-admin的项目。我们有一个使用flask创建的API,现在正在使用它的管理界面。其中一个要求是在TableA中创建记录时,需要在TableB中创建许多相关记录,其中包括新TableA条目的ROW_ID。

我已经创建了一个表格,用于将数据输入到TableA(工作正常),但不知道如何自动向TableB添加数据。数据提交到表后,是否返回新的(TableA)ROW_ID?有更好的方法吗?

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

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

我从代码中拼凑出来,所以希望它足够完整。如果其中任何一个令人困惑,或者它没有回答您的问题,请告诉我。

http://flask-admin.readthedocs.org/en/latest/quickstart/#model-views

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))