0

我是 OpenERP 的新手。我正在研究 CRM 模块。我在 Bug 模块上创建,它实际上是由crm_claim. 我已经添加了一些额外的字段(其中的复选框)。它工作正常。
我对 OpenERP 的体验非常好。但我被困在验证点上。实际上我想要的是如果没有单击复选框,用户将无法保存记录。如果单击其中之一,则应保存记录。我已经搜索过互联网。我找不到任何确定的解决方案,但有一些模棱两可的解决方案。这是列表:-
一些帖子建议覆盖写入和创建。但我的问题是,我继承自crm_claim,我在层次结构中的任何地方都没有找到 write 和 create 函数。如果我覆盖它们,我必须编写所有逻辑来保存整个声明和以上类。这让我感到非常困难。

  1. 我试图找到onsave事件,但我没有找到任何事件。
  2. 有人建议使用向导来解决此问题。

我不知道该怎么办。请在这方面帮助我。

4

2 回答 2

0

您不必重写 create 或 write 函数。因为重写这样的核心功能是不可取的,除非你没有任何选择。

在这种情况下,您可以选择。

请参考销售模块 addons/stock/stock.py

你会发现 _constraints,你可以使用相同的 . 它只会检查选定字段的值何时更改。它也有异常引发设施。

于 2012-09-01T13:48:21.610 回答
-1

writeandcreate方法继承自 osv.osv 模型,该模型在 .osv 中的类BaseModel中实现server/openerp/osv/orm.py

您不需要复制逻辑,只需调用原始方法即可。

例如,在您的模型中,添加以下方法:

def create(self, cr, uid, vals, context=None):
    """
    Override osv.create() method to validate the data
    """
    if not (vals['attr1'] or vals['attr2'] or vals['attr3']:
        raise osv.except_osv(_('Warning !'),_("You have to choose at least one attribute"))

    return super(my_model, self).create(cr, uid, vals, context)
于 2012-09-01T13:38:51.203 回答