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

writeおよびメソッドは、のクラスにcreate実装されている osv.osv モデルから継承されます。BaseModelserver/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 に答える