gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 19:14:22 25 4
gpt4 key购买 nike

在 Flask AppBuilder 中,对于我的模型(父) View 之一,我有一个 post_add 方法,该方法触发该模型实例的一个方法:

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

顾名思义,我想通过该方法创建子对象。来自 Django,我习惯于让我的模型变胖(将一些逻辑放在模型中)。但是,虽然我知道如何在内存中为 Child 模型实例化一个新对象,但我对如何保存它感到困惑。我无法获得当前的数据库 session 以添加() 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 吗?在定义此方法的任何地方,我如何着手保存我创建的新 child ?我怀疑有一个辅助方法/函数可以解决这个问题,但我无法从文档中找到它。

谢谢,

最佳答案

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

因此您可以获得这样的 SQLAlchemy session (在您的 View 中):

self.appbuilder.get_session

关于python - 使用 Flask AppBuilder 和 SQLAlchemy 从模型方法中保存相关模型实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35490041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com