我正在尝试在我的 Plone 站点上创建一个控制面板插件,用于编辑字典类型的注册表记录。
我的目的是将“供应商类型”作为字典存储在注册表中。
我的registry.xml位于profiles/default中:
<registry>
<record interface="gpcl.assets.suppliertypes.ISupplierTypes" field="supplier_types">
<value>
<element key="1">Distributor</element>
<element key="2">Manufacturer</element>
<element key="3">Service Provider</element>
</value>
</record>
</registry>
我的界面和形式:
class ISupplierTypes(form.Schema):
""" Define settings data structure
"""
supplier_types = schema.Dict(title=u"Types of Suppliers",
key_type=schema.Int(title=u"supplier_type_id"),
value_type=schema.TextLine(title=u"supplier_type_name",
required=False),
required=False,
)
class SupplierTypesEditForm(RegistryEditForm):
"""
Define form logic
"""
schema = ISupplierTypes
label = u"Types of Suppliers"
description = u"Please enter types of suppliers"
class SupplierTypesView(grok.View):
"""
View class
"""
grok.name("supplier-types")
grok.context(ISiteRoot)
def render(self):
view_factor = layout.wrap_form(SupplierTypesEditForm, ControlPanelFormWrapper)
view = view_factor(self.context, self.request)
return view()
我将其添加到我的profiles/default 中的controlpanels.xml 和portal_quickinstaller 中,安装该产品,控制面板确实显示在附加组件中,并显示显示默认值的字段。
不幸的是,当我尝试添加、编辑或删除时,会显示一条错误消息,指出“包含的类型错误”。我认为我创建控制面板的方法是错误的。
为字典类型的记录创建控制面板的正确方法是什么?
具有讽刺意味的是,在视图类的渲染方法中,我尝试查看是否可以打印记录(在此处找到了如何执行此操作:https://pypi.python.org/pypi/plone.app.registry#using-the-records-proxy https://pypi.python.org/pypi/plone.app.registry#using-the-records-proxy)并且我能够以字典对象的形式出现。我还能够以编程方式向记录添加新的“元素”。
就我想使用字典类型而言,我确实计划利用键值,这就是我想使用字典类型的原因。
如果我使用了不恰当的术语,我深表歉意。
先感谢您。
Edit:
我正在使用 Plone 4.3.2。
Edit:
对不起我错了。我找到了回溯。
2014-08-20 13:13:07 ERROR Zope.SiteErrorLog 1408554787.930.279058908095
http://localhost:8080/GPCLAssetTracker/@@supplier-types/@@z3cform_validate_field
Traceback (innermost last):
Module ZPublisher.Publish, line 138, in publish
Module ZPublisher.mapply, line 72, in mapply
Module ZPublisher.Publish, line 53, in missing_name
Module ZPublisher.HTTPResponse, line 741, in badRequestError
BadRequest: <h2>Site Error</h2>
<p>An error was encountered while publishing this resource.
</p>
<p><strong>Invalid request</strong></p>
The parameter, <em>fname</em>, was omitted from the request.<p>Make sure to specify all required parameters, and try the request again.</p>
<hr noshade="noshade"/>
<p>Troubleshooting Suggestions</p>
<ul>
<li>The URL may be incorrect.</li>
<li>The parameters passed to this resource may be incorrect.</li>
<li>A resource that this resource relies on may be
encountering an error.</li>
</ul>
<p>For more detailed information about the error, please
refer to the error log.
</p>
<p>If the error persists please contact the site maintainer.
Thank you for your patience.
</p>
我还忘了提,我使用的操作系统是 Xubuntu。