这是我使用 flask/flask-admin 的第一个项目。我们有一个使用烧瓶创建的 API,现在正在处理它的管理界面。其中一个要求是在 TableA 中创建记录时,需要在 TableB 中创建许多相关记录,其中包括新 TableA 条目的 ROW_ID。
我已经创建了一个表格,用于将数据输入到 TableA(工作正常),但不知道如何自动将数据添加到 TableB。数据提交到表后是否返回新的(TableA)ROW_ID?有一个更好的方法吗?
有什么想法吗?
这是我使用 flask/flask-admin 的第一个项目。我们有一个使用烧瓶创建的 API,现在正在处理它的管理界面。其中一个要求是在 TableA 中创建记录时,需要在 TableB 中创建许多相关记录,其中包括新 TableA 条目的 ROW_ID。
我已经创建了一个表格,用于将数据输入到 TableA(工作正常),但不知道如何自动将数据添加到 TableB。数据提交到表后是否返回新的(TableA)ROW_ID?有一个更好的方法吗?
有什么想法吗?
文档没有很好的示例,但您可以覆盖模型的所有 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))