使用Odoo 10(从GitHub提交7413b26
,分支10.0
),安装我从Odoo 8移植的模块失败,因为没有在继承的{{1 }}。问题是,在继承的模型中创建了 这个字段,问题仍然存在,能够创建MCVE来说明行为:
account.invoice
:
invoice.py
from odoo import fields, models
class AccountInvoice(models.Model):
_inherit = 'account.invoice'
a = fields.Char()
:
invoice.xml
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record model="ir.ui.view" id="account_invoice_form_view">
<field name="name">account.invoice.form</field>
<field name="model">account.invoice</field>
<field name="type">form</field>
<field name="inherit_id" ref="account.invoice_form"/>
<field name="arch" type="xml">
<field name="origin" position="after" >
<field name="a" />
</field>
</field>
</record>
</data>
</openerp>
为__manifest__.py
而{'name':'Invoice bug','depends':['account'],'data':['invoice.xml'],'installable':True}
只是通常的__init__.py
。
此类代码以
失败import invoice
以下是一些更多的观察结果:
ParseError: "Error while validating constraint
Field `a` does not exist
Error context:
View `account.invoice.form`
[view_id: 554, xml_id: invoice_bug.account_invoice_form_view, model: account.invoice, parent_id: 421]
None" while parsing /odoo/addons/invoice_bug/invoice.xml:4, near
[XML follows]
和查看product.template
(使用product.product_template_only_form_view
,可以正常使用<field name="default_code" position="after">
代替<xpath expr="//field[@name='origin']" position="after">
不会影响错误field position="after"
模块)成功地正确扩展了sale
和相同的视图(account.invoice
):sale/models/account_invoice.py:8,sale/views/sale_views.xml:653 < / LI>
account.invoice_form
的现已删除的引用替换为period_id
)< / LI>
我的代码是错误的,还是有解决方法?
答案 0 :(得分:2)
来源字段。
如果您在表单视图 invoice_form 中签入,那么我们会收到两次原始字段。
invoice_line_ids 内联树状视图。
其他信息页。
如果我们写完字段位置之后系统会在 invoice_line_ids 内嵌树视图中找到第一个字段,由于这个原因我们会收到错误。
但是Odoo提供了错误的错误消息。
您需要按照以下xpath。
<xpath expr="//page[@name='other_info']/group/group[2]/field[@name='origin']" position="after">
<field name="a"/>
</xpath>
这可能会对你有帮助。
答案 1 :(得分:0)
每件事都很好,应该将字段添加到模型中。 对你的问题的一个解释是odoo没有达到你的代码。
项目中是否只有一个init文件,或者您正在使用多文件夹项目。检查你的缩进。
答案 2 :(得分:0)
尝试更改标记
<openerp>..</openerp> to <odoo>..</odoo>