首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在plone.app.registry和GenericSetup中使用collective.z3cform.datagridfield

在plone.app.registry和GenericSetup中使用collective.z3cform.datagridfield
EN

Stack Overflow用户
提问于 2013-08-01 23:56:06
回答 1查看 318关注 0票数 3

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

我正在尝试为plone.app.registry字段使用collective.z3cform.datagridfield,但在实际设置它的值时遇到了问题。除了使用collective.z3cform.datagridfield.registry.DictRow作为注册表的持久化版本之外,文档似乎并没有说太多。

作为参考,我的类如下所示:

代码语言:javascript
复制
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一起导出会产生以下结果:

代码语言:javascript
复制
<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>

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

代码语言:javascript
复制
TypeError: ('Could not adapt', None, <InterfaceClass zope.schema._bootstrapinterfaces.IFromUnicode>)

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

那么,处理datagridfields的registry.xml的正确方法是什么呢?或者我必须在setuphandlers.py中以编程方式添加记录?我对注册表和plone.supermodel的使用还相当陌生,而且如果我的registry.xml是错误的,我也不会感到惊讶。

EN

回答 1

Stack Overflow用户

发布于 2013-08-02 22:46:10

我认为问题在于您将代码名称声明为schema.TextLine (unicode),但您在注册表中使用了字符串;请尝试以下操作:

{u‘’code‘:u’‘Authors’,u‘’name‘:u’‘Authors’}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17998903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档