You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo继承stock.picking创建自定义模型并配置XML视图及新增字段问题

问题原因

你当前的写法同时定义了_inherit = 'stock.picking'和_name = 'loading.chart',属于Odoo的原型继承,会生成完全独立的新模型loading.chart,和原有的stock.picking没有关联,所以会出现两种问题:

  1. 写model为loading.chart时,得到的是全新模型,看不到原stock.picking的业务数据
  2. 写model为stock.picking时,看不到新增字段,因为字段都加到了新模型loading.chart上,原模型没有这些字段

根据你的实际需求,对应两种解决方案:


方案1:仅扩展原有stock.picking模型,给原有库存调拨功能新增字段

如果你不需要独立菜单,只想在原有库存调拨的视图里显示新字段,按以下修改:

第一步:修改Python代码

删除_name = 'loading.chart',仅保留继承逻辑:

class LoadingChart(models.Model):
    _inherit = 'stock.picking'
    _description = "Loading Chart"

    nf_date = fields.Date(string="Loading Date")
    nf_date1 = fields.Datetime(string="Date")
    nf_reference = fields.Char(string="Reference")
    nf_seq = fields.Char(string='Loading Sequence', required=True, copy=False, readonly=True,
                         index=True, default=lambda self: _('New'))

第二步:修改XML代码

通过inherit_id继承原有stock.picking的视图,在原有视图基础上插入新字段即可:

<?xml version='1.0' encoding='utf-8'?>
<odoo>
    <!-- 继承原有库存调拨树视图 -->
    <record model="ir.ui.view" id="stock_picking_tree_inherit">
        <field name="name">stock.picking.tree.inherit</field>
        <field name="model">stock.picking</field>
        <field name="inherit_id" ref="stock.view_picking_tree"/>
        <field name="arch" type="xml">
            <!-- 在原有树视图的name字段后插入新字段 -->
            <field name="name" position="after">
                <field name="nf_date"/>
                <field name="nf_date1"/>
            </field>
        </field>
    </record>

    <!-- 继承原有库存调拨表单视图 -->
    <record id="stock_picking_form_inherit" model="ir.ui.view">
        <field name="name">stock.picking.form.inherit</field>
        <field name="model">stock.picking</field>
        <field name="inherit_id" ref="stock.view_picking_form"/>
        <field name="arch" type="xml">
            <!-- 在原有表单视图的reference字段后插入新字段 -->
            <field name="reference" position="after">
                <field name="nf_seq" readonly="1"/>
                <field name="nf_date"/>
                <field name="nf_date1"/>
                <field name="nf_reference"/>
            </field>
        </field>
    </record>
</odoo>

方案2:创建独立的loading.chart模型,继承stock.picking所有功能+独立菜单

如果你需要完全独立的业务模块,带专属菜单,保留stock.picking原有功能,按以下修改:
你当前的Python代码是正确的,XML存在标签未闭合、字段名多空格的语法错误,修正后代码如下:

<?xml version='1.0' encoding='utf-8'?>
<odoo>
    <record model="ir.ui.view" id="nf_unloading_view">
        <field name="name">Loading.chart.tree</field>
        <field name="model">loading.chart</field>
        <field name="arch" type="xml">
            <tree>
                <field name="nf_date"/>
                <field name="nf_date1"/>
                <field name="nf_reference"/>
                <field name="nf_seq"/>
            </tree>
        </field>
    </record>

     <record id="loading_chart_form_view" model="ir.ui.view">
        <field name="name">loading.chart.form</field>
        <field name="model">loading.chart</field>
        <field name="arch" type="xml">
            <form>
                <sheet>
                    <div class='oe_title'>
                        <h1>
                            <field name="nf_seq" readonly="1"/>
                        </h1>
                    </div>
                    <group>
                        <group>
                             <field name="nf_date"/>
                             <field name="nf_date1"/>
                        </group>
                        <group>
                             <field name="nf_reference"/>
                        </group>
                    </group>
                </sheet>
            </form>
        </field>
    </record>

    <record model="ir.actions.act_window" id="loading_chart_action_window">
        <field name="name">loading Chart</field>
        <field name="res_model">loading.chart</field>
        <field name="view_mode">tree,form</field>
    </record>

    <menuitem id="loading_chart_root_menu" name="Loading Chart"
              parent="stock.menu_stock_warehouse_mgmt" action="loading_chart_action_window" sequence="20"/>
</odoo>

生效注意事项

  • 修改完成后必须升级对应的自定义模块,改动才会生效
  • 如果普通用户看不到新增字段,需要在模块的权限配置文件中添加对应字段的访问权限

内容的提问来源于stack exchange,提问作者Nasiha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 09:09:03