フィールドの取得
スキーマを取得できれば、フィールドを取得できます。
器用さコンテンツ タイプの場合、フィールド名とタイプの portal_type がわかっている場合は、タイプのファクトリ タイプ情報( FTI ) からスキーマを取得できます。
したがって、 portal_typeとfield_nameがわかっている場合:
from zope.component import getUtility
from plone.dexterity.interfaces import IDexterityFTI
fti = getUtility(IDexterityFTI, name=portal_type)
schema = fti.lookupSchema()
field = schema.get(field_name)
ウィジェットを取得する
z3c.form ドキュメントから: http://packages.python.org/z3c.form/widget.html
ウィジェットはマルチアダプターなので、フィールドがある場合は次のように取得できます。
ageWidget = zope.component.getMultiAdapter((field, request),
interfaces.IFieldWidget)
重要: plone.autoformでウィジェットを指定した場合、そのウィジェットは取得されません。plone.autoformは手動でz3c.form.field.FieldオブジェクトにwidgetFactoryを設定します (これはzope.schemaフィールドと同じではありません!)。その場合、ウィジェットを取得する最良の方法は、FieldWidgetの開始を手動で呼び出すことによって、既に行ったことです。
たとえば、UserAndGroupSelectionWidgetが必要な場合:
widget = FieldWidget(field, UserAndGroupSelectionWidget(field, request))
PS 私もコレクティブに参加しており、ピッカー ウィジェットを使用しているため、コードを更新しました;)