为zeam.form提供额外的SQLAlchemy支持
项目描述
zeam.form.rdb为zeam.form.base提供生成表单字段的辅助工具,使用来自zeam.form.ztk的表单字段从SQLAlchemy模型。
为了实现这一功能,您必须使用表单中的描述符ModelFields创建您的字段。它将自动获取表单的上下文并相应地生成字段(为了性能原因,它们将被缓存)。
示例
from zeam.form.rdb import ModelFields from zeam.form.base import Form class MyForm(Form): label = "Test form" fields = ModelFields()
在您的SQLAlchemy模式中,您可以使用额外的字典info来控制生成的小部件。外键将根据您选择作为标题的列生成可能的值选择。
示例
from sqlalchemy import Column, ForeignKey from sqlalchemy.types import Integer, String from zeam.form.ztk.widgets.uri import URIField idT_Effort = Column( 'idT_Effort', Integer, primary_key=True, info={'title': u"Identifier"}) idT_Opportunity = Column( 'idT_Opportunity', Integer, ForeignKey('T_Opportunity.idT_Opportunities'), info={'title': u'Opportunity', 'foreignTitleColumn': 'Title'}) Name = Column( 'Name', String(45), info={'minLength': 20, 'maxLength': 45}) URL = Column( 'URL', String(63), info={'title': u"URL", 'description': u"Website URL" 'factory': URIField, 'defaultValue': 'http://github.com', 'required': True})
对于外键(ForeignKey),您可以在info
字典中提供多个列给foreignTitleColumn
,以及一个用于创建标题的函数foreignTitleFactory
。同时,还可以指定foreignTitleQuery
来细化用于获取标题术语的SQLAlchemy请求。
除非列是可空的,或者通过info
提供了required
选项,否则将需要一个字段。
title
和description
将从info
中使用,以创建表单字段。
变更
1.0.1 (2012/12/12)
修复标题工厂以支持Unicode值。
1.0 (2012/10/11)
重构以不再依赖于
zope.schema
或megrok.rdb
。SQLAlchemy列直接转换为zeam表单字段。这需要zeam.form.ztk
1.3或更高版本。添加字段生成的测试。
1.0b2 (2012/06/21)
添加对
title_query
的支持,用于在生成的ForeignKey词汇中过滤术语。
1.0b1 (2012/04/27)
初始版本。