使用 Flask AppBuilder 和 SQLAlchemy 从模型方法保存相关模型实例



在 Flask AppBuilder 中,对于我的一个模型(父)视图,我有一个post_add方法,它可以为模型的这个实例触发一个方法:

def post_add(self, item):
    item.create_children()

顾名思义,我想通过这种方法创建孩子。来自Django,我习惯于让我的模型变胖(将一些逻辑放在模型中)。但是,虽然我知道如何在内存中为 Child 模型实例化一个新对象,但我对如何保存它感到困惑。我无法掌握当前的数据库会话来添加()孩子,我想知道我这样做的方式在Flask AppBuilder中是否有意义。下面是我在父模型类中的create_children方法定义:

def create_children(self):
    for i in range(self.num_children):
        c = Child(some_prop=self.prop)
        c.parent = self
        # And here I'm lost as to how to save each children.
        get_session().add(c)
        get_session().commit()

当然get_session()在这里不起作用,因为我的模块中没有定义get_session。我基本上有两个问题,这是继续使用Flask AppBuilder的正确方法吗?我应该将此代码移回 views.py 吗?无论在哪里定义这种方法,我该如何拯救我创造的新孩子?我怀疑有一个辅助方法/函数,但我无法从文档中找到它。

谢谢

在文档中,您有: https://flask-appbuilder.readthedocs.io/en/latest/api.html#flask.ext.appbuilder.base.AppBuilder.get_session

因此,您可以像这样获得SQLAlchemy会话(在您看来):

self.appbuilder.get_session

最新更新