如何在按钮的逻辑中引发异常而不会使我的视图不同步?

时间:2015-05-22 21:23:26

标签: openerp-7

在OpenERP 7中,当我在窗体视图中单击一个按钮(不同于"保存"按钮)时,在处理按钮的逻辑之前,窗体会尝试保存(创建或写入)。

如果我的按钮运行并发现意外情况(例如数据和/或状态无效),则抛出异常。异常背后的概念是预期的:我们编制了一个osv.except_osv的位置,并按预期提升。

然而,当引发异常时,视图不同步(例如,如果对象-eg sale.order在我的情况下 - 有子女,并且创建了一个额外的孩子 - 例如sale.order.line-和按下按钮)。背后的原因是视图处理按钮时出现异常,因此它不会像往常一样更新。

如果在获得异常后,我单击任何按钮(甚至是“保存”按钮),则会发生以下行为:

" Discard"按钮:如果 - 单击提示异常的按钮 - 我单击"放弃",将引发另一个异常:"未捕获记录未正确加载",视图及其相关视图将崩溃直到我刷新浏览器。

对于任何其他按钮:如果 - 单击提示异常的按钮 - 我单击按钮,将再次创建任何新元素。如果我创建一个新的sale.order.line并单击异常提升按钮,新条目将被保存,并且由于视图不知道它(因为它有异常并且从不刷新),单击任何按钮将尝试再次保存对象及其子对象(包括再次创建新元素)。结论:如果我创建一个新的子项,并单击异常提升按钮N次,最后一个不会导致异常的按钮,我将得到N + 1个新孩子(当我只打算给一个新孩子时)。

问题:我该如何预防?如何在按钮的行为(带有类型:对象的按钮)中触发异常,而不会使我的视图不同步?

0 个答案:

没有答案