我想为一些应该有其他字段的对象设置标记接口。如果我再次删除此标记界面,也应删除字段。
现在我试图了解plone.behavior。但是我不确定是否必须为某个类型的所有对象启用某个行为,或者是否可以仅为该类型的对象的子集启用它?
答案 0 :(得分:2)
不幸的是,我认为没有开箱即用的解决方案。 您可以做的最简单的事情是通过覆盖表单中的updateFields方法来处理表单字段。 这是未经测试的演示代码:
def updateFields(self):
if not IMyInterface.providedBy(self.context):
self.fields = (
self.fields.omit('IMyBehaviour.my_field')
)
作为参考,请参阅:
答案 1 :(得分:2)
查看collective.instancebehavior,这是一个旨在完全符合您要求的插件:为每个内容类型实例启用行为。