0

12 個のフィールドを持つフォームから 1 つのフィールドのみを表示するカスタム編集フォームを開こうとしています。

class EditForm(dexterity.EditForm):
    grok.name('editCustom')
    grok.context(IInfo)

    def updateWidgets(self):
        super(EditForm, self).updateWidgets()
        self.widgets['alps'].mode = 'hidden'
        self.widgets['operationStatus'].mode = 'hidden'

# etc.

MultiField リスト選択であるフィールドに到達するまで、問題なく動作します。

        self.widgets['siteContact'].mode = 'hidden'

(これは form.Schema のエントリです):

siteContact = schema.List(
    title=_(u"Site Contact"),
    description =_(u"Select Site Contacts"),
    value_type=schema.Choice(vocabulary=("test.siteContact")),
    required=False,
)

しかし、カスタム EditForm にアクセスしようとすると、次のようになります。

  Module z3c.form.widget, line 140, in render
  Module zope.component._api, line 109, in getMultiAdapter
ComponentLookupError: ((<Container at /test/first>, <HTTPRequest, URL=http://localhost:8080/test/first/@@editCustom>, <Products.Five.metaclass.EditForm object at 0x08F9D9F0>, <zope.schema._field.List object at 0x084844B0>, <OrderedSelectWidget 'form.widgets.siteContact'>), <InterfaceClass zope.pagetemplate.interfaces.IPageTemplate>, 'hidden')
4

2 に答える 2