gpt4 book ai didi

sqlalchemy - 如何使用 ColanderAlchemy 编辑现有记录?

转载 作者:行者123 更新时间:2023-12-02 00:15:50 25 4
gpt4 key购买 nike

我有一个像这样的 SQLAlchemy 模型:

class Group(Base):
__tablename__ = 'groups'

id = Column(Integer, primary_key = True, ca_include = True)
name = Column(String, ca_include = True)

class User(Base):
__tablename__ = 'users'

id = Column(Integer, primary_key = True, ca_include = True)
name = Column(String, ca_include = True)
group_id = Column(Integer, ForeignKey('groups.id'), nullable = True, ca_include = True)
group = relationship('Group', ca_include = True)

我用的表单库是deform。我安装了ColanderAlchemy自动将模型定义转换为 Colander Schema:

form = deform.Form(SQLAlchemyMapping(Group), use_ajax = True)

而且我可以执行 form.render() 以获得空表单。但是如何用记录来填充这个空表格呢?我试过:

group = Group.get(1)
form.render(group)

但是失败了。我也关注了这个blog但它只能将单个记录转换为漏勺格式,而不会转换任何关系。那么...我是否可以将 SQLAlchemy 记录转换为 Colander 记录?

最佳答案

您需要利用与您给定的 SQLAlchemyMapping 模式对象关联的 dictify 方法将给定的模型实例转换为可接受的应用结构,以呈现您的变形形式。

因此,使用您的示例模型,您可能会这样做:

schema = SQLAlchemyMapping(Group)
form = deform.Form(schema, use_ajax=True)
my_group = Group(id=1, name='Foobar') #or query for an instance etc
appstruct = schema.dictify(my_group)
form.render(appstruct)

由于 ColanderAlchemy 在这个阶段非常先进,你的里程可能会在新版本中有所不同(上面是为版本 0.1 编写的),特别是因为它正在被大量重写以消除对自定义列和关系类型的需要版本 0.2。我注意到当前的 ColanderAlchemy 0.1b6 版本存在问题 - 特别是在关系映射方面。

http://colanderalchemy.rtfd.org/ 查阅文档有关最新版本的详细信息。

关于sqlalchemy - 如何使用 ColanderAlchemy 编辑现有记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13216761/

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