我如何在Plone或Zope中进行"模型"计算

mjt*_*rac 1 plone zope3 dexterity z3c.form

这是一个非常基本的设计问题,但我似乎无法找到答案.我将使用一个非常简单的示例,但我担心的是模型级计算(在此示例中为"2 + 2")变得复杂的情况.

假设我正在设计一个在Zope或Plone中运行的应用程序; 它的工作是添加两个数字.Dexterity让我可以轻松创建包含字段addend1和addend2的内容​​类型,并为我生成添加,编辑和显示表单.我可以修改显示形式以显示一个名为"sum"的字段,但"sum"是我模型中大量计算的结果,我不想在"添加"或"编辑"表单中显示它作为计算的结果,我不需要它作为输入.我不想在我的视图中计算它,因为它很昂贵,我想在最初计算之后重复使用它,并且我不希望我的"视图"需要任何关于我如何进行计算的知识.

那么什么是适当的"zca"ish方法来做模型工作,与结果的呈现没有任何关系?我是否创建了一个像ISum这样的接口并创建了一个适配器,将我的内容类型转换为一个包括总和的接口,然后为ISum接口做一个视图?如果不是那样,那是什么?搜索PP4D和Zope 3开发人员手册没有帮助.

提前感谢任何见解.

Mar*_*ers 5

使用事件; 您可以在添加或编辑内容类型时注册事件处理程序,并在这些事件触发处理程序时在对象上设置值.