【问题标题】:Replacing a field in an already inherited view through view inheritance (Odoo 8)通过视图继承替换已继承视图中的字段(Odoo 8)
【发布时间】:2015-09-04 10:34:54
【问题描述】:

来自 sale_stock 模块的 sale_stock_view.xml 通过继承扩展了来自 sale 模块的 sale_view.xml 并添加了warehouse_id

sale_stock_view.xml:

        <record id="view_order_form_inherit" model="ir.ui.view">
            <field name="name">sale.order.form.sale.stock</field>
            <field name="model">sale.order</field>
            <field name="inherit_id" ref="sale.view_order_form"/>
            <field name="arch" type="xml">
                <data>
                    ...
                    <field name="client_order_ref" position="after">
                         <field name="warehouse_id" on_change="onchange_warehouse_id(warehouse_id)" options="{'no_create': True}" groups="stock.group_locations"/>
                    </field>

我想通过 position="replace" 的空字段从 sale_stock 模块继承 .xml 来删除warehouse_id:

我自己模块中的 .xml:

<?xml version="1.0" encoding="utf-8"?>
    <openerp>
    <data>
        <record id="view_order_form_inherit_mymodule" model="ir.ui.view">
                <field name="name">sale.stock.sale.order.form.mymodule</field>
            <field name="model">sale_stock.sale_order</field>
            <field name="inherit_id" ref="sale_stock.view_order_form_inherit"/>
            <field name="arch" type="xml">
                <field name="warehouse_id" position="replace"/>
            </field>
        </record>
    </data>
</openerp>

错误信息:

ParseError: "ValidateError
Field(s) `arch` failed against a constraint: Invalid view definition

Error details:
Konnte Modell nicht finden: sale_stock.sale_order

Fehler Kontext:
Ansicht `sale.stock.sale.order.form.mymodule`
[view_id: 1470, xml_id: k. A., model: sale_stock.sale_order, parent_id: 783]" while parsing /home/tertia/workspace/odoo8/custom_modules/mymodule/views/sale/sale_view.xml:4, near
<record id="view_order_form_inherit_mymodule" model="ir.ui.view">
                    <field name="name">sale.stock.sale.order.form.mymodule</field>
                    <field name="model">sale_stock.sale_order</field>
                    <field name="inherit_id" ref="sale_stock.view_order_form_inherit"/>
                    <field name="arch" type="xml">
                        <field name="warehouse_id" position="replace"/>
                    </field>
                </record>

错误消息是德语但翻译成Model could not be found: sale_stock.sale_order 我尝试了各种模型,如sale_stock.sale_stock.sale_ordersale.order 或简单的sale_order,但每次尝试都会导致相同的错误消息。

【问题讨论】:

    标签: inheritance openerp odoo odoo-8 openerp-8


    【解决方案1】:

    在我看来,您要处理的模型只是sale.order。据我所知,sales_stock 模块中没有 sale_order 模型。

    【讨论】:

    • @dnl.re 你找到答案了吗?.. 当我们将模型名称定义为 sale.order 时它也不起作用