1

这是一个非常基本的设计问题,但我似乎找不到答案。我将使用一个非常简单的示例,但我关心的是模型级计算(本示例中的“2+2”)变得复杂的情况。

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

那么,什么是正确的“zca”方法来进行与结果呈现无关的模型工作呢?我是否创建一个类似 ISum 的接口并创建一个适配器,将我的内容类型转换为包含总和的内容类型,然后为 ISum 接口做一个视图?如果不是,那是什么?搜索 PP4D 和 Zope 3 开发人员手册并没有帮助。

提前感谢您的任何见解。

4

1 回答 1

5

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

于 2012-11-15T19:09:50.350 回答