使用自定义模块修改OpenERP的核心字段之一

Don*_*kby 6 openerp odoo

有时,我们的OpenERP用户希望对核心OpenERP模块中的字段进行小的更改.例如,他们希望产品屏幕的Rack,Row和Case字段长度超过16个字符.

我是否可以在不更改声明它的模块的情况下更改现有字段?我宁愿使用我们自己的自定义模块进行更改,而不是编辑product模块本身.

Don*_*kby 4

我已经成功了,但我希望其他人知道更干净的方法。

您可以在自定义模块中继承核心模块的类,然后只需声明一个与您要更改的名称相同的新字段。本质上,只需从核心模块复制字段声明,将其粘贴到您的自定义模块中,然后进行所需的更改。例如,我们的product_notes模块将机架、行和箱字段从模块的 16 个扩大到255product

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

我不喜欢这个的原因是,现在该字段的所有其他属性都有重复。如果您更改字段长度,然后核心模块更改帮助文本,您仍然会看到旧的帮助文本。我希望在模块加载时有某种方法可以进入并调整父级的字段属性,但我在正确的时间找不到任何钩子。

您可以更轻松地进行的一项更改是字段的默认值。只需在自定义模块中为核心模块的字段声明一个默认值,它将替换原始默认值。例如,我们更改了module和 的sale_delay默认produce_delay值。product

_defaults = {'sale_delay': lambda *a: 5,
             'produce_delay': lambda *a: 0}
Run Code Online (Sandbox Code Playgroud)

  • 据我所知,这是唯一的方法。我一直在自定义模块中使用这些“字段重载”,主要是为了更改字段名称和帮助文本,但我一直在不假思索地这样做。至于默认值,我觉得大多数时候“设置默认值”功能就更足够了。 (2认同)