为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.ztk1.3或更高版本。添加字段生成的测试。
1.0b2 (2012/06/21)
添加对
title_query的支持,用于在生成的ForeignKey词汇中过滤术语。
1.0b1 (2012/04/27)
初始版本。