我有一个这样的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来自动将模型定义转换为漏斗模式:
form = deform.Form(SQLAlchemyMapping(Group), use_ajax = True)我可以执行form.render()来获得一个空表单。但是如何用记录填充这个空表单呢?我试过了:
group = Group.get(1)
form.render(group)但是失败了。我也遵循了这个blog,但它只能将单个记录转换为漏斗的格式,但不会转换任何关系。所以..。有没有办法将SQLAlchemy记录转换成漏斗记录?
发布于 2012-11-21 13:04:57
您需要利用与给定的SQLAlchemyMapping模式对象相关联的dictify方法来将给定的模型实例转换为可用于呈现变形表单的appstruct。
因此,使用您的示例模型,您可能会这样做:
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/上的文档。
https://stackoverflow.com/questions/13216761
复制相似问题