У меня есть тип контента ловкости, и я следую руководству по типам, управляемым схемой, из Руководства по ловкости (http://docs.plone.org/external/plone.app.dexterity/docs/schema-driven-types.html#the-schema), и я пытаюсь изменить значение поля по умолчанию.
Возвращаемое значение основано на поиске в каталоге портала. Поле имеет тип int, в котором я хочу, чтобы оно было равно наибольшему числу + 1 рассматриваемого поля. Поскольку это поле я хочу скрыть, я подумал, что, возможно, можно будет установить значение по умолчанию, вернув значение из значения функции в параметр поля по умолчанию.
Вот мой интерфейс:
class ISupplier(model.Schema):
"""
Supplier of an asset or services
"""
supplier_id = schema.Int(
title=_(u"Supplier ID"),
description=_(u"ID that links to the database"),
required=True,
default=newID
)
...
Вот моя функция, которую я пытаюсь использовать для возврата значения. Это вне занятий.
@grok.provider(IContextSourceBinder)
def newID(context):
limit = 1
catalog = getToolByName(context, 'portal_catalog')
result = catalog.searchResults(portal_type='gpcl.supplier.supplier',
sort_on='supplier_id',
sort_order='descending',
sort_limit=limit
)[:1]
return result.supplier_id + 1
Причина, по которой я думал, что можно сделать что-то подобное, заключается в том, что в поле типа выбора я установил источник, равный значению, возвращаемому функцией:
form.widget(supplierType=CheckBoxFieldWidget)
supplierType = schema.List(title=u'Types',
value_type=schema.Choice(source=supplierTypes),
required=True
SupplierTypes, функция, начинается так:
@grok.provider(IContextSourceBinder)
def supplierTypes(context):
"""
"""
...
Я пытался использовать default_value:
@form.default_value(field=ISupplier['supplier_id'])
def supplierIDDefaultValue(data):
defaultID = newID
return defaultID
К сожалению, это не сработало. Я считаю, что на самом деле у меня может быть неправильное понимание. Если бы я мог получить любую помощь, я был бы очень признателен.
defaultFactory
(я использовал его вне ловкости) - person keul   schedule 02.09.2014