我有一个敏捷内容类型,我一直在关注Dexterity手册(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
遗憾的是,这并没有奏效。我相信我实际上可能完全有误解了。如果我能得到任何帮助,我将不胜感激。