将 table 创建任务添加到 Flask-Admin 模型创建
Add table creation task to Flask-Admin model creation
我仍在学习 flask-admin。作为部门模型的一部分,我有一个名为 table_name 的字段。当我创建一个新实例时,table_name 的值变成部门 table 中的一行。这就是 flask-admin 的设计目的。我想实际使用表单数据,即 table_name 的值来使用 sqlalchemy 创建一个 table。我知道如何使用 sqlalchemy 动态创建 table 。我只是想知道如何将它融入到 flask-admin 为我所做的事情中。示例:如果我在 flask 管理表单的 table_name 字段中键入 'my_table',将在我的模式中创建一个名为 'my_table' 的新 table。
例如,我定义了一个模型,fields/columns 之一是 'name'。当我在 flask-admin 中创建我的模型的新实例时,我为 'name' 输入的任何内容都会在我的 table 中保存为一行。我的问题是:如果我真的想创建一个全新的 table,其名称是提供给 'name' 属性的字符串怎么办?我知道我必须使用 sqlalchemy 来动态创建 table。但是我在 flask-admin 的什么地方添加了那个逻辑来创建 table.
flask-admin 中的什么方法或视图在 table 中插入行。也许我可以自定义或扩展该方法并添加我的代码以创建 tables 除了 flask-admin 所做的行插入之外。所以我想扩展 flask-admin 的功能来为我的需要做定制的事情。我已经阅读了 on_model_change 以及覆盖它以添加自定义逻辑的可能性。
您可以覆盖 ModelView 的 on_model_change
和 on_model_delete
方法,这些方法在 commit
更改之前由 flask-admin 调用:
class TableConfig(ModelView):
def on_model_change(self, form, model, is_created):
if is_created:
sqlalchemy_create_table(model)
def on_model_delete(self, model):
sqlalchemy_drop)table(model)
其中 sqlalchemy_create_table
和 sqlalchemy_drop_table
是实际创建表的自定义方法,使用传递的 model
对象中的信息 - 在您的例子中,table_name
属性 或其他人。
我实际上在实时项目中使用 flask-admin 实现了这个确切的功能。
我仍在学习 flask-admin。作为部门模型的一部分,我有一个名为 table_name 的字段。当我创建一个新实例时,table_name 的值变成部门 table 中的一行。这就是 flask-admin 的设计目的。我想实际使用表单数据,即 table_name 的值来使用 sqlalchemy 创建一个 table。我知道如何使用 sqlalchemy 动态创建 table 。我只是想知道如何将它融入到 flask-admin 为我所做的事情中。示例:如果我在 flask 管理表单的 table_name 字段中键入 'my_table',将在我的模式中创建一个名为 'my_table' 的新 table。
例如,我定义了一个模型,fields/columns 之一是 'name'。当我在 flask-admin 中创建我的模型的新实例时,我为 'name' 输入的任何内容都会在我的 table 中保存为一行。我的问题是:如果我真的想创建一个全新的 table,其名称是提供给 'name' 属性的字符串怎么办?我知道我必须使用 sqlalchemy 来动态创建 table。但是我在 flask-admin 的什么地方添加了那个逻辑来创建 table.
flask-admin 中的什么方法或视图在 table 中插入行。也许我可以自定义或扩展该方法并添加我的代码以创建 tables 除了 flask-admin 所做的行插入之外。所以我想扩展 flask-admin 的功能来为我的需要做定制的事情。我已经阅读了 on_model_change 以及覆盖它以添加自定义逻辑的可能性。
您可以覆盖 ModelView 的 on_model_change
和 on_model_delete
方法,这些方法在 commit
更改之前由 flask-admin 调用:
class TableConfig(ModelView):
def on_model_change(self, form, model, is_created):
if is_created:
sqlalchemy_create_table(model)
def on_model_delete(self, model):
sqlalchemy_drop)table(model)
其中 sqlalchemy_create_table
和 sqlalchemy_drop_table
是实际创建表的自定义方法,使用传递的 model
对象中的信息 - 在您的例子中,table_name
属性 或其他人。
我实际上在实时项目中使用 flask-admin 实现了这个确切的功能。