繁体   English   中英

将表创建任务添加到Flask-Admin模型创建中

[英]Add table creation task to Flask-Admin model creation

我仍在学习flask-admin。 我的部门模型中有一个名为table_name的字段。 当我创建一个新实例时,table_name的值将成为Department表中的一行。 这就是flask-admin设计的目的。 我想实际使用表单数据,即table_name的值来创建带有sqlalchemy的表。 我知道如何使用sqlalchemy动态创建表。 我只是想知道如何将其合并到flask-admin为我做的事情中。 示例:如果我在flask admin表单的table_name字段中键入“ my_table”,则将在我的模式中创建一个名为“ my_table”的新表。

例如,我定义了一个模型,并且字段/列之一是“名称”。 当我在flask-admin中创建模型的新实例时,为“ name”键入的任何内容都会保存为表中的一行。 我的问题是:如果我实际上想创建一个名称为提供给'name'属性的字符串的全新表,该怎么办? 我知道我必须使用sqlalchemy动态创建该表。 但是我在flask-admin的哪里添加了该逻辑来创建表。

flask-admin中的哪种方法或视图可以在表中插入行。 也许我可以自定义或扩展该方法,并添加我的代码以创建表(除了flask-admin进行的行插入之外)。 因此,我想扩展flask-admin的功能以根据自己的需要做定制的事情。 我已经读过有关on_model_change的信息,以及重写它来添加自定义逻辑的可能性。

您可以覆盖on_model_changeon_model_changeon_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_tablesqlalchemy_drop_table是使用传递的model对象中的信息(实际上是table_name属性或其他)来实际创建表的自定义方法。

实际上,我在一个实时项目中使用flask-admin实现了这一确切功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM