Использование Collective.z3cform.datagridfield с Dexterity
Я новичок в Plone и пытаюсь использовать DataGridField с ловкостью. Цель состоит в том, чтобы использовать Plone 4.1 для публикации результатов исследования удобства использования в нашей интрасети. Я создал настраиваемый тип документа (называемый взаимодействием), и я хочу использовать сетку данных для одного из полей для моделирования таблицы, содержащей два столбца, показывающих сводку результатов.
В соответствии с инструкциями, приведенными на коллективном.z3cform.datagridfield Я успешно добавил яйцо коллективного.z3cform.datagrid в список яиц в моем сборке, и я вижу, что появляется новое дополнение как Активный в моем списке дополнений для моего сайта. Я создал простой модуль 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:
Для полноты картины я также включил соответствующий файл profiles / default / types / Interaction.xml:
InteractionAn item in the interactions dictionarystring:${portal_url}/document_icon.pnginteractionviewTrueTrueFalseviewFalsecmf.AddPortalContentplone.dexterity.content.Itemplonetheme.mytheme.interaction.IInteraction
Когда я перехожу к форме добавления для своего настраиваемого типа взаимодействия, я получаю стандартный виджет добавления / удаления элемента списка ловкости. а не виджет таблицы datagrid, который я видел в примерах Collective.z3cform.datagrid_demo. Когда я пытаюсь сохранить настраиваемый тип, виджет списка ловкости отображает ошибку проверки: «Система не может обработать данное значение.'
Есть ли еще какой-нибудь код, который мне нужно добавить? Нужно ли переопределить шаблоны представления Dexterity Add / EditForm?