<html>
    <head />
        <body>
            Hi Christian,<br /><br />sure, I also changed the code a bit so that it is now a list of objects: <br /><br />URL: http://localhost:8020/Foo/admin<br />File '/root/.buildout/eggs/Paste-1.7.2-py2.6.egg/paste/evalexception/middleware.py', line 306 in respond<br />&nbsp; app_iter = self.application(environ, detect_start_response)<br />File '/root/.buildout/eggs/zope.app.wsgi-3.6.1-py2.6.egg/zope/app/wsgi/__init__.py', line 59 in __call__<br />&nbsp; request = publish(request, handle_errors=handle_errors)<br />File '/root/.buildout/eggs/zope.publisher-3.12.3-py2.6.egg/zope/publisher/publish.py', line 134 in publish<br />&nbsp; result = publication.callObject(request, obj)<br />File '/root/.buildout/eggs/grok-1.1.1-py2.6.egg/grok/publication.py', line 89 in callObject<br />&nbsp; return super(ZopePublicationSansProxy, self).callObject(request, ob)<br />File '/root/.buildout/eggs/zope.app.publication-3.10.2-py2.6.egg/zope/app/publication/zopepublication.py', line 205 in callObject<br />&nbsp; return mapply(ob, request.getPositionalArguments(), request)<br />&lt;Foo.app.FooEditForm object at 0x26fd990&gt;<br />File '/root/.buildout/eggs/zope.publisher-3.12.3-py2.6.egg/zope/publisher/publish.py', line 109 in mapply<br />&nbsp; return debug_call(obj, args)<br />File '/root/.buildout/eggs/zope.publisher-3.12.3-py2.6.egg/zope/publisher/publish.py', line 115 in debug_call<br />&nbsp; return obj(*args)<br />File '/root/.buildout/eggs/grokcore.formlib-1.5-py2.6.egg/grokcore/formlib/components.py', line 90 in __call__<br />&nbsp; self.update_form()<br />File '/root/.buildout/eggs/grokcore.formlib-1.5-py2.6.egg/grokcore/formlib/components.py', line 62 in update_form<br />&nbsp; super(GrokForm, self).update()<br />File '/root/.buildout/eggs/zope.formlib-4.0-py2.6.egg/zope/formlib/form.py', line 750 in update<br />&nbsp; errors, action = handleSubmit(self.actions, data, self.validate)<br />File '/root/.buildout/eggs/zope.formlib-4.0-py2.6.egg/zope/formlib/form.py', line 693 in handleSubmit<br />&nbsp; errors = default_validate(action, data)<br />File '/root/.buildout/eggs/zope.formlib-4.0-py2.6.egg/zope/formlib/form.py', line 730 in validate<br />&nbsp; return (getWidgetsData(self.widgets, self.prefix, data)<br />File '/root/.buildout/eggs/zope.formlib-4.0-py2.6.egg/zope/formlib/form.py', line 346 in getWidgetsData<br />&nbsp; data[name] = widget.getInputValue()<br />File '/root/.buildout/eggs/zope.formlib-4.0-py2.6.egg/zope/formlib/sequencewidget.py', line 165 in getInputValue<br />&nbsp; sequence = self._type(self._generateSequence())<br />File '/root/.buildout/eggs/zope.formlib-4.0-py2.6.egg/zope/formlib/sequencewidget.py', line 227 in _generateSequence<br />&nbsp; widget = self._getWidget(i)<br />File '/root/.buildout/eggs/zope.formlib-4.0-py2.6.egg/zope/formlib/sequencewidget.py', line 105 in _getWidget<br />&nbsp; (field, self.request), IInputWidget)<br />File '/root/.buildout/eggs/zope.component-3.9.1-py2.6.egg/zope/component/_api.py', line 111 in getMultiAdapter<br />&nbsp; raise ComponentLookupError(objects, interface, name)<br />ComponentLookupError: ((&lt;zope.schema._field.Object object at 0x27994d0&gt;, &lt;zope.publisher.browser.BrowserRequest instance URL=http://localhost:8020/Foo/admin&gt;), &lt;InterfaceClass zope.formlib.interfaces.IInputWidget&gt;, u'')<br /><br />class IFooField(interface.Interface):<br />&nbsp;&nbsp;&nbsp; name = schema.TextLine(title=u'Name', required = True)<br />&nbsp;&nbsp;&nbsp; format = schema.Choice(title=u'Field Format', required = True, values = ['Text', 'Date', 'Number'])<br />&nbsp;&nbsp; <br />class IFoo(interface.Interface):<br />&nbsp;&nbsp;&nbsp; title=schema.TextLine(title=u'Title',required=True)<br />&nbsp;&nbsp;&nbsp; description=schema.TextLine(title=u'Description',required=False)<br />&nbsp;&nbsp;&nbsp; data_fields= schema.List(title=u'Fields', required = False, unique = True, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value_type = schema.Object(title=u'Field', required = False, schema = IFooField))<br />&nbsp;&nbsp;&nbsp; <br />class Foo(grok.Application, grok.Container):<br />&nbsp;&nbsp;&nbsp; grok.implements(IFoo)<br />&nbsp;&nbsp;&nbsp; title = u'Foobar'<br />&nbsp;&nbsp;&nbsp; description = u''<br /><br />class FooEditForm(grok.EditForm):<br />&nbsp;&nbsp;&nbsp; grok.context(Foo)<br />&nbsp;&nbsp;&nbsp; grok.name('admin')<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; form_fields = grok.AutoFields(Foo)<br />&nbsp;&nbsp;&nbsp; template = grok.PageTemplateFile('custom_edit_form.pt')&nbsp;&nbsp;&nbsp; <br /><br />Many thanks again!<br /><br />Sascha<br />
        <div class="signature"><br /><br /><br />-- <br />Neu: GMX De-Mail - Einfach wie E-Mail, sicher wie ein Brief!  <br />Jetzt De-Mail-Adresse reservieren: http://portal.gmx.net/de/go/demail</div></body>
    </html>