首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用ColanderAlchemy编辑已有的记录?

如何使用ColanderAlchemy编辑已有的记录?
EN

Stack Overflow用户
提问于 2012-11-04 15:05:26
回答 1查看 598关注 0票数 3

我有一个这样的SQLAlchemy模型:

代码语言:javascript
复制
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来自动将模型定义转换为漏斗模式:

代码语言:javascript
复制
form = deform.Form(SQLAlchemyMapping(Group), use_ajax = True)

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

代码语言:javascript
复制
group = Group.get(1)
form.render(group)

但是失败了。我也遵循了这个blog,但它只能将单个记录转换为漏斗的格式,但不会转换任何关系。所以..。有没有办法将SQLAlchemy记录转换成漏斗记录?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-21 13:04:57

您需要利用与给定的SQLAlchemyMapping模式对象相关联的dictify方法来将给定的模型实例转换为可用于呈现变形表单的appstruct。

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

代码语言:javascript
复制
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/上的文档。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13216761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档