添加子 class 后自定义 Odoo 模块安装错误
Custom Odoo module install error after adding sub class
我正在尝试向制造模块的产品屏幕添加一个选项卡。该选项卡应该看起来像这样:Product Part Detail Tab
我创建了一个自定义模块,但在尝试安装它时总是出现错误:
"ParseError: "验证错误
字段 arch
因约束而失败:无效的视图定义
错误详情:
字段 x_mfrpn
不存在
下面是我的代码,我意识到它是用于更高版本的 OpenERP 的语法,但是在我尝试向它添加 'class sub_part_detail' 之前模块工作正常。
from openerp.osv import osv, fields
class product_part_detail(osv.osv):
_name = 'product.part.detail'
_inherit = 'product.template'
_columns = {
'x_mfrpn': fields.char('P/N'),
'product_part_detail': fields.one2many('sub.part.detail','sub_part_detail')
}
class sub_part_detail(osv.osv):
_name = 'sub.part.detail'
_inherit = 'product.part.detail'
_columns = {
'x_bomcategory': fields.char('Category'),
'x_primarypn': fields.boolean('Primary PN'),
'x_obsolete': fields.boolean('Obsolete'),
'x_mfrname': fields.char('MFR'),
'x_pndescription': fields.char('Description'),
'x_pnupgrade': fields.char('Upgrade'),
'x_pnnotes': fields.text('Notes'),
'sub_part_detail': fields.many2one('product.part.detail')
}
这是我的 xml
<?xml version="1.0"?>
<openerp>
<data>
<record model="ir.ui.view" id="product_part_detail">
<field name="name">product.template.product.form</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_only_form_view"/>
<field name="arch" type="xml">
<xpath expr="//page[@string='Accounting']" position="after">
<page string="Part Detail">
<field name="x_mfrpn" />
</page>
</xpath>
</field>
</record>
<record model="ir.ui.view" id="sub_part_detail">
<field name="arch" type="xml">
<field name="x_mfrpn" position="after">
<field name="x_bomcategory" />
<field name="x_primarypn" />
<field name="x_obsolete" />
<field name="x_mfrname" />
<field name="x_pndescription" />
<field name="x_pnupgrade" />
<field name="x_pnnotes" />
</field>
</field>
</record>
</data>
<record model="ir.ui.view" id="sub_part_detail">
<field name="name">sub.part.detail..form</field>
<field name="model">sub.part.detail</field>
<field name="arch" type="xml">
<field name="x_bomcategory" />
<field name="x_primarypn" />
<field name="x_obsolete" />
<field name="x_mfrname" />
<field name="x_pndescription" />
<field name="x_pnupgrade" />
<field name="x_pnnotes" />
</field>
</record>
也不需要写 _inherit = 'product.template' 和
_inherit = 'product.part.detail' 在 py 文件中
我正在尝试向制造模块的产品屏幕添加一个选项卡。该选项卡应该看起来像这样:Product Part Detail Tab
我创建了一个自定义模块,但在尝试安装它时总是出现错误:
"ParseError: "验证错误
字段 arch
因约束而失败:无效的视图定义
错误详情:
字段 x_mfrpn
不存在
下面是我的代码,我意识到它是用于更高版本的 OpenERP 的语法,但是在我尝试向它添加 'class sub_part_detail' 之前模块工作正常。
from openerp.osv import osv, fields
class product_part_detail(osv.osv):
_name = 'product.part.detail'
_inherit = 'product.template'
_columns = {
'x_mfrpn': fields.char('P/N'),
'product_part_detail': fields.one2many('sub.part.detail','sub_part_detail')
}
class sub_part_detail(osv.osv):
_name = 'sub.part.detail'
_inherit = 'product.part.detail'
_columns = {
'x_bomcategory': fields.char('Category'),
'x_primarypn': fields.boolean('Primary PN'),
'x_obsolete': fields.boolean('Obsolete'),
'x_mfrname': fields.char('MFR'),
'x_pndescription': fields.char('Description'),
'x_pnupgrade': fields.char('Upgrade'),
'x_pnnotes': fields.text('Notes'),
'sub_part_detail': fields.many2one('product.part.detail')
}
这是我的 xml
<?xml version="1.0"?>
<openerp>
<data>
<record model="ir.ui.view" id="product_part_detail">
<field name="name">product.template.product.form</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_only_form_view"/>
<field name="arch" type="xml">
<xpath expr="//page[@string='Accounting']" position="after">
<page string="Part Detail">
<field name="x_mfrpn" />
</page>
</xpath>
</field>
</record>
<record model="ir.ui.view" id="sub_part_detail">
<field name="arch" type="xml">
<field name="x_mfrpn" position="after">
<field name="x_bomcategory" />
<field name="x_primarypn" />
<field name="x_obsolete" />
<field name="x_mfrname" />
<field name="x_pndescription" />
<field name="x_pnupgrade" />
<field name="x_pnnotes" />
</field>
</field>
</record>
</data>
<record model="ir.ui.view" id="sub_part_detail">
<field name="name">sub.part.detail..form</field>
<field name="model">sub.part.detail</field>
<field name="arch" type="xml">
<field name="x_bomcategory" />
<field name="x_primarypn" />
<field name="x_obsolete" />
<field name="x_mfrname" />
<field name="x_pndescription" />
<field name="x_pnupgrade" />
<field name="x_pnnotes" />
</field>
</record>
也不需要写 _inherit = 'product.template' 和 _inherit = 'product.part.detail' 在 py 文件中