修改OpenERP';s核心字段使用自定义模块

修改OpenERP';s核心字段使用自定义模块,openerp,odoo,Openerp,Odoo,有时,我们的OpenERP用户希望对核心OpenERP模块中的字段进行一个小的更改。例如,他们希望产品屏幕的机架、行和大小写字段长度超过16个字符 我是否可以在不更改声明字段的模块的情况下更改现有字段?我宁愿使用我们自己的自定义模块进行更改,而不是编辑产品模块本身。我已经完成了这项工作,但我希望其他人知道更干净的方法 您可以在自定义模块中继承核心模块的类,然后只需声明一个与要更改的字段同名的新字段。基本上,只需从核心模块复制字段声明,将其粘贴到自定义模块中,然后进行所需的更改。例如,我们的pro

有时,我们的OpenERP用户希望对核心OpenERP模块中的字段进行一个小的更改。例如,他们希望产品屏幕的机架、行和大小写字段长度超过16个字符


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

我已经完成了这项工作,但我希望其他人知道更干净的方法

您可以在自定义模块中继承核心模块的类,然后只需声明一个与要更改的字段同名的新字段。基本上,只需从核心模块复制字段声明,将其粘贴到自定义模块中,然后进行所需的更改。例如,我们的
product\u notes
模块从16到255

我不喜欢这样做的原因是,现在字段的所有其他属性都有重复项。如果更改字段长度,然后核心模块更改帮助文本,则仍将保留旧的帮助文本。我希望在加载模块时能够找到一些方法来调整父级的字段属性,但我在正确的时间找不到任何挂钩

可以更容易地进行的一个更改是字段的默认值。只需在自定义模块中为核心模块的字段声明一个默认值,它就会替换原来的默认值。例如,我们更改了中的默认值


在ODOO中,我们可以使用xml更改字段的任何属性

            <field name="loc_rack" position="attributes">
                <attribute name="string">Axis</attribute>
            </field>

但是在某些情况下,比如扩展字段的大小,它会失败。

您需要继承产品表单

给你

from openerp.osv import fields, osv
class product_product(osv.Model)  # <<<v7 

    _inherit = 'product.product'

    _columns = {
    'loc_rack': fields.char('Rack', size=<your size>),
    'loc_row': fields.char('Row', size=<your size>),
    'loc_case': fields.char('Case', size=<your size>)
    }
来自openerp.osv导入字段,osv

class product_product(osv.Model)#据我所知,这是唯一的方法。我在自定义模块中使用这些“字段重载”主要是为了更改字段名和帮助文本,但我一直在不假思索地这样做。至于默认值,我觉得大多数时候“设置默认值”功能更合适。@DanielReis除了这个简单的重载,你知道其他解决方案吗?
            <field name="loc_rack" position="attributes">
                <attribute name="string">Axis</attribute>
            </field>
from openerp.osv import fields, osv
class product_product(osv.Model)  # <<<v7 

    _inherit = 'product.product'

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