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

如何在res.users中添加字段并让所有模块默认可用?

在Odoo中为res.users添加全局可用字段的正确方式

你完全不需要修改原生的res.users模块,也不用创建独立的新模型——Odoo的模型继承机制专门解决这类扩展需求,具体步骤如下:

  • 通过模型继承扩展res.users
    创建一个自定义模块,在模块的models目录下新建Python文件,通过_inherit关键字直接扩展原生res.users模型,添加所需字段。这种方式会把新字段合并到原生模型中,所有依赖res.users的模块都能直接访问这些字段。示例代码:

    from odoo import models, fields
    
    class ResUsers(models.Model):
        _inherit = 'res.users'  # 仅继承,不创建新模型
    
        phone_number = fields.Char(string='电话号码')
        room_number = fields.Char(string='房间号')
        extension_number = fields.Char(string='分机号')
    
  • 将字段添加到用户表单视图
    要让新字段在后台用户界面显示,需要继承res.users的表单视图,把字段插入到合适位置。在模块的views目录下创建XML文件,示例代码:

    <odoo>
        <record id="view_users_form_extend" model="ir.ui.view">
            <field name="name">res.users.form.extend</field>
            <field name="model">res.users</field>
            <field name="inherit_id" ref="base.view_users_form"/>
            <field name="arch" type="xml">
                <!-- 选择在邮箱字段后插入新字段,可根据需求调整xpath定位 -->
                <xpath expr="//field[@name='email']" position="after">
                    <field name="phone_number"/>
                    <field name="room_number"/>
                    <field name="extension_number"/>
                </xpath>
            </field>
        </record>
    </odoo>
    
  • 配置并安装模块
    在模块的__manifest__.py中声明models和views的路径,确保Odoo能加载这些文件。安装自定义模块后,所有内部模块就能直接通过res.users模型获取电话号码、房间号等字段,无需跨模块查询。

注:如果你之前尝试创建继承res.users的新模型(指定了_name),那确实会生成独立模型,Odoo不会自动用它替代原生res.users——但只要只保留_inherit不指定新_name,就是对原生模型的扩展,这才是正确的姿势。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 22:06:02