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 и GenericSetup
Я пытаюсь используйте коллекцию.z3cform.datagridfield для поля plone.app.registry, но при этом возникают проблемы с фактическим значением для него значений. В документации, по-видимому, нет , кроме использования коллективного.z3cform.datagridfield.registry.DictRow для постоянной версии реестра.
Для справки, мой класс выглядит следующим образом:
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 для этой записи. Ввод значения ТТП и экспортировать его с 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 «конвертер = IFromUnicode (поле)» и в отладчике я вижу, что значение «поле» не является на самом деле ни один.
Итак, каков правильный способ обработки registry.xml для datagridfields? Или мне придется добавлять записи программно в setuphandlers.py или что-то еще? Я довольно новичок в использовании реестра и plone.supermodel, и учитывая, что в поле указано «Нет», я не удивлюсь, если мой файл registry.xml просто ошибается.
реестра были некоторые проблемы, почему она не может поддерживать сложные типы полей, как DGF. Либо 1) перестаньте пытаться 2) быть готовым идти длинными отрезками, чтобы исправить проблему с помощью реестра и DGF. –