plone.behavior 是否可以只为某种类型的某些对象启用?
Can a plone.behavior be enabled for just some objects of a type?
我想为一些应该有额外字段的对象设置一个标记接口。如果我再次删除此标记界面,这些字段也应该被删除。
现在我正在努力理解 plone.behavior。但我不确定是否必须为一种类型的所有对象启用行为,或者是否可以只为该类型的一部分对象启用它?
不幸的是,我认为没有开箱即用的解决方案。
您可以做的最简单的事情是通过覆盖表单中的 updateFields 方法来处理表单字段。
这是未经测试的演示代码:
def updateFields(self):
if not IMyInterface.providedBy(self.context):
self.fields = (
self.fields.omit('IMyBehaviour.my_field')
)
作为参考,请查看:
看看 collective.instancebehavior,一个旨在完全满足您的需求的附加组件:为每个内容类型实例启用行为。
我想为一些应该有额外字段的对象设置一个标记接口。如果我再次删除此标记界面,这些字段也应该被删除。
现在我正在努力理解 plone.behavior。但我不确定是否必须为一种类型的所有对象启用行为,或者是否可以只为该类型的一部分对象启用它?
不幸的是,我认为没有开箱即用的解决方案。 您可以做的最简单的事情是通过覆盖表单中的 updateFields 方法来处理表单字段。 这是未经测试的演示代码:
def updateFields(self):
if not IMyInterface.providedBy(self.context):
self.fields = (
self.fields.omit('IMyBehaviour.my_field')
)
作为参考,请查看:
看看 collective.instancebehavior,一个旨在完全满足您的需求的附加组件:为每个内容类型实例启用行为。