我们要求灵活性内容类型排除导航行为,但exclude_from_nav
字段的默认值为True
。在行为plone.app.dexterity.behaviors.exclfromnav.IExcludeFromNavigation
中,默认为False
。
显然我可以创建自己的行为来复制IExcludeFromNavigation
除了默认值,但我想知道是否有办法在重用IExcludeFromNavigation
时执行此操作。我们还有其他使用IExcludeFromNavigation
的内容类型,我们希望它默认为False
。
我们正在使用Plone 4.1rc3和Dexterity 1.0
答案 0 :(得分:5)
请参阅http://plone.org/products/dexterity/documentation/manual/developer-manual/advanced/defaults和http://pypi.python.org/pypi/plone.directives.form#value-adapters,但基本上是:
@form.default_value(field=IExcludeFromNavigation['exclude_from_nav'], context=IMyType)
def excludeFromNavDefaultValue(data):
return True
干杯, 马丁
答案 1 :(得分:3)
我使用plone.directives.form
装饰器进行此操作。
我已将此添加到我的某个行为模块中。
from plone.directives.form import default_value
@default_value(field = IExcludeFromNavigation['exclude_from_nav'])
def excludeFromNavDefaultValue(data):
return data.request.URL.endswith('++add++my_item_type')
我在configure.zcml
中也有以下内容<include package="plone.directives.form" file="meta.zcml" />
<include package="plone.directives.form" />
<grok:grok package="." />
感谢马丁的大线索,尽管他的答案并没有解决我的问题。这对我来说有点像黑客 - 一个更优雅的解决方案会很好。