gpt4 book ai didi

python - 灵活使用 collective.z3cform.datagridfield

转载 作者:太空狗 更新时间:2023-10-29 21:53:35 26 4
gpt4 key购买 nike

我是 Plone 的新手,我正在尝试灵活地使用 DataGridField。目标是使用 Plone 4.1 在我们的内部网上发布可用性研究的结果。我创建了一个自定义文档类型(称为交互),我想对其中一个字段使用数据网格来为包含两列的表建模,这些列显示调查结果的摘要。

按照 collective.z3cform.datagridfield 中列出的说明我已经成功地将 collective.z3cform.datagrid egg 添加到我的构建中的 egg 列表中,我可以看到新的附加组件在我的站点的附加组件列表中显示为事件。我创建了一个简单的模式 Python 模块,它描述了一个文档,该文档显示了我正在记录的可用性研究的结果:

from five import grok
from zope import schema
from zope import interface

from plone.directives import form

from plonetheme.mytheme import InteractionMessageFactory as _

from plone.app.textfield import RichText

from z3c.form import field, button
from Products.CMFCore.interfaces import IFolderish

from collective.z3cform.datagridfield import DataGridFieldFactory, DictRow

class IFinding(interface.Interface):
summary = schema.TextLine(title=_(u"Summary"))
percentage = schema.TextLine(title=_(u"Percentage"))

class IInteraction(form.Schema):

findings = schema.List(
title=_(u"Overview of findings"),
required=False,
value_type=DictRow(
title=_(u"Finding"),
schema=IFinding
)
)

class EditForm(form.EditForm):
grok.context(IInteraction)
grok.require('zope2.View')
fields = field.Fields(IInteraction)

fields['findings'].widgetFactory = DataGridFieldFactory

我已经通过向 profiles/default/types.xml 添加一行来注册我的新交互内容类型:

<?xml version="1.0"?>
<object meta_type="Plone Types Tool" name="portal_types">
<property name="title">Controls the available content types in your portal</property>
<object meta_type="Dexterity FTI" name="interaction" />
<!-- -*- extra stuff goes here -*- -->
</object>

为了完整起见,我还包含了相应的 profiles/default/types/interaction.xml 文件:

<?xml version="1.0"?>
<object name="interaction" meta_type="Dexterity FTI"
xmlns:i18n="http://xml.zope.org/namespaces/i18n">
<property name="title">Interaction</property>
<property name="description">An item in the interactions dictionary</property>
<property name="icon_expr">string:${portal_url}/document_icon.png</property>
<property name="factory">interaction</property>
<property name="link_target"></property>
<property name="immediate_view">view</property>
<property name="global_allow">True</property>
<property name="filter_content_types">True</property>
<property name="allowed_content_types"/>
<property name="allow_discussion">False</property>
<property name="default_view">view</property>
<property name="view_methods">
<element value="view"/>
</property>
<property name="default_view_fallback">False</property>
<property name="add_permission">cmf.AddPortalContent</property>
<property name="klass">plone.dexterity.content.Item</property>
<property name="behaviors">
<element value="plone.app.dexterity.behaviors.metadata.IDublinCore"/>
<element value="plone.app.content.interfaces.INameFromTitle"/>
<element value="collective.flowplayer.behaviors.IFlowplayerFile"/>
</property>
<property name="schema">plonetheme.mytheme.interaction.IInteraction</property>

<property name="model_file"></property>
<alias from="(Default)" to="(dynamic view)"/>
<alias from="edit" to="@@edit"/>
<alias from="sharing" to="@@sharing"/>
<alias from="view" to="(selected layout)"/>
<action title="View" action_id="view" category="object" condition_expr=""
icon_expr="" link_target="" url_expr="string:${object_url}"
visible="True">
<permission value="View"/>
</action>
<action title="Edit" action_id="edit" category="object" condition_expr=""
icon_expr="" link_target="" url_expr="string:${object_url}/edit"
visible="True">
<permission value="Modify portal content"/>
</action>
</object>

当我转到交互自定义类型的添加表单时,我得到一个标准的敏捷列表项添加/删除小部件,而不是我在 collective.z3cform.datagrid_demo 示例中看到的数据网格表小部件。当我尝试保存自定义类型时,敏捷列表小部件显示验证错误“系统无法处理给定值。”

我还需要添加其他代码吗?我是否需要覆盖 Dexterity Add/EditForm View 模板?

最佳答案

您按照记录在做,但行不通。这是一个已知问题:

http://code.google.com/p/dexterity/issues/detail?id=246

关于python - 灵活使用 collective.z3cform.datagridfield,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8301094/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com