6

OpenERP ユーザーは、コア OpenERP モジュールのフィールドに小さな変更を加えたいと思うことがあります。たとえば、製品画面の Rack、Row、および Case フィールドを 16 文字より長くしたいと考えています。

宣言したモジュールを変更せずに、既存のフィールドを変更できますか? productモジュール自体を編集するのではなく、独自のカスタム モジュールを使用して変更を加えたいと思います。

4

3 に答える 3

4

私はこれを機能させましたが、他の誰かがよりクリーンな方法を知っていることを願っています。

カスタム モジュールでコア モジュールのクラスを継承し、変更するフィールドと同じ名前の新しいフィールドを宣言するだけです。基本的に、コア モジュールからフィールド宣言をコピーし、それをカスタム モジュールに貼り付けてから、必要な変更を加えます。たとえば、このproduct_notesモジュールでは、Rack、Row、および Case フィールドがモジュールの 16 から 255 に拡大さproductました。

_columns = {'loc_rack': fields.char('Rack', size=255),
            'loc_row': fields.char('Row', size=255),
            'loc_case': fields.char('Case', size=255)}

これが気に入らない理由は、フィールドの他のすべての属性が重複しているためです。フィールドの長さを変更すると、コア モジュールがヘルプ テキストを変更しても、古いヘルプ テキストが表示されたままになります。モジュールが読み込まれているときに親のフィールド属性を調整する方法があることを期待していましたが、適切なタイミングでフックが見つかりませんでした。

より簡単に行える変更の 1 つは、フィールドのデフォルト値です。カスタム モジュールでコア モジュールのフィールドのデフォルト値を宣言するだけで、元のデフォルトが置き換えられます。たとえばモジュール内のデフォルトsale_delayproduce_delayデフォルトを変更しました。product

_defaults = {'sale_delay': lambda *a: 5,
             'produce_delay': lambda *a: 0}
于 2012-08-01T18:33:29.853 に答える