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,一个旨在完全满足您的需求的附加组件:为每个内容类型实例启用行为。