原型内容的数据网格,基于z3c.form的行
archetypes.gridfield的Python项目详细描述
简介
archetypes.gridfield添加了对不可内联编辑的数据网格的支持。 使用覆盖窗口可以添加/编辑行。
请注意,当前版本需要plone.app.jquerytools的分支,该分支是 包含在示例构建中。
此外,gridfield小部件仅显示在基本视图窗体上(field 在对象编辑窗体上不可见!!)。这不是一个bug,而是一个特性。
用法
通常安装。之后,您可以向内容类型添加其他字段:
from archetypes.gridfield import GridField ... GridField('field_name', row_interface = IProjectRow ) ...
iprojectrow是一个zope接口,它为一行定义数据。 addform和editform由此生成:
class IProjectRow(Interface): title = schema.TextLine(title=u'Project name', required=True) kind = schema.Choice(title=u'Project type', vocabulary="project.projectTypesVocabulary") start_date = schema.Date(title=u'Start date', required=True) end_date = schema.Date(title=u'End date', required=False)
您可以定义自定义的添加/编辑表单和更新小部件:
from archetypes.gridfield.forms import AddForm, EditForm from collective.z3cform.datetimewidget import DateFieldWidget class ProjectAddForm(AddForm): def __init__(self, context, request): super(ProjectAddForm, self).__init__(context, request) self.fields['start_date'].widgetFactory = DateFieldWidget self.fields['end_date'].widgetFactory = DateFieldWidget class ProjectEditForm(EditForm): def __init__(self, context, request): super(ProjectEditForm, self).__init__(context, request) self.fields['start_date'].widgetFactory = DateFieldWidget self.fields['end_date'].widgetFactory = DateFieldWidget
由于addform/editform被重新定义,我们必须在字段中指定表单 定义:
GridField('projects', row_interface = IProjectRow, add_form = ProjectAddForm, edit_form = ProjectEditForm, widget = GridWidget(label="Projects") )
示例
如果要在单独的构建中测试archetypes.gridfield,请签出full 从SVN打包并使用example.cfg buildout配置:
svn co http://svn.plone.org/svn/archetypes/MoreFieldsAndWidgets/archetypes.gridfield/trunk gridfield cd gridfield python2.4 bootstrap.py bin/buildout -c example.cfg bin/instance fg
最后访问任何对象的基础视图模板,例如FrontPage:
http://127.0.0.1:8080/portal/front-page/base_view
在自定义构建中使用
请注意,包裹还在开发中。需要分支 plone.app.jquerytools和一些自定义版本的pin。一切都安排好了 示例构建,以便从中复制需求。
更改日志
1.0dev(未发布)
- 初始版本