可以为一个类型的某些对象启用plone.behavior吗?

时间:2015-10-02 13:03:26

标签: plone dexterity

我想为一些应该有其他字段的对象设置标记接口。如果我再次删除此标记界面,也应删除字段。

现在我试图了解plone.behavior。但是我不确定是否必须为某个类型的所有对象启用某个行为,或者是否可以仅为该类型的对象的子集启用它?

2 个答案:

答案 0 :(得分:2)

不幸的是,我认为没有开箱即用的解决方案。 您可以做的最简单的事情是通过覆盖表单中的updateFields方法来处理表单字段。 这是未经测试的演示代码:

def updateFields(self):
    if not IMyInterface.providedBy(self.context):
        self.fields = (
            self.fields.omit('IMyBehaviour.my_field')
        )

作为参考,请参阅:

答案 1 :(得分:2)

查看collective.instancebehavior,这是一个旨在完全符合您要求的插件:为每个内容类型实例启用行为。