gpt4 book ai didi

python - 将 collective.z3cform.datagridfield 与 plone.app.registry 和 GenericSetup 一起使用

转载 作者:行者123 更新时间:2023-11-28 18:47:22 25 4
gpt4 key购买 nike

Plone 4.2.0.1,plone.app.registry 1.1,plone.supermodel 1.1.1,collective.z3cform.datagridfield 0.11

我正在尝试将 collective.z3cform.datagridfield 用于 plone.app.registry 字段,但实际上为它设置值时遇到了问题。文档好像没说除了将 collective.z3cform.datagridfield.registry.DictRow 用于注册表的持久版本之外。

作为引用,我的类(class)如下所示:

class IMySchema(form.Schema):
code = schema.TextLine(title = _(u"Code"), required=False)
name = schema.TextLine(title = _(u"Name"), required=False)

from collective.z3cform.datagridfield.registry import DictRow
class IMySettings(form.Schema):
""" """
form.widget(display_fields=DataGridFieldFactory)
display_fields = schema.List(
title = _(u"Display Fields"),
description = _(u"The fields that will be displayed in view and edit pages"),
value_type=DictRow(title=_(u"Field"), schema=IMySchema),
required=False,
)

我可以使用 GenericSetup 设置一个空白值,并且与此注册表交互的控制面板表单可以正常工作。但我无法让 GenericSetup 为该记录从 registry.xml 导入值。输入值 TTP 并使用 GenericSetup 导出它会产生以下结果:

<registry>
<record field="display_fields" interface="my.product.interfaces.settings.IMySettings" name="my.product.interfaces.settings.IMySettings.display_fields">
<field type="plone.registry.field.List">
<description>The fields that will be displayed in view and edit pages</description>
<required>False</required>
<title>Display Fields</title>
</field>
<value>
<element>{'code': u'authors', 'name': u'Authors'}</element>
</value>
</record>
</registry>

但是如果我尝试导入它,我会得到一个错误!

TypeError: ('Could not adapt', None, <InterfaceClass zope.schema._bootstrapinterfaces.IFromUnicode>)

这就是 plone.supermodel.utils "converter = IFromUnicode(field)"中的这一行,在调试器中我看到 'field' 的值实际上是 None。

那么,处理数据网格字段的 registry.xml 的正确方法是什么?或者我是否必须在 setuphandlers.py 或其他东西中以编程方式添加记录?我对使用还很陌生registry 和 plone.supermodel,鉴于该字段显示无,如果我的 registry.xml 完全错误,我不会感到惊讶。

最佳答案

我认为问题在于您将 codename 声明为 schema.TextLine (unicode) 但您在注册表中使用的是字符串;尝试以下操作:

{u'code': u'authors', u'name': u'Authors'}

关于python - 将 collective.z3cform.datagridfield 与 plone.app.registry 和 GenericSetup 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17998903/

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