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

Odoo 14 Enterprise创建用户时出现ValueError错误求助

解决Odoo 14创建res.users时触发的res.partner.company_type值错误问题

从你的错误栈可以明确看到核心问题:ValueError: Wrong value for res.partner.company_type: '0' —— 在创建用户时,系统自动创建关联的合作伙伴(res.partner)时,给company_type字段传入了非法值'0',而这个字段的合法选项只有'person'(个人)和'company'(公司)两种。

下面是几个可行的排查和修复步骤:

  • 第一步:定位错误值的来源
    从traceback里能看到,创建流程经过了generic_security_restriction模块的res_users.create方法,先检查这个自定义/第三方模块的代码,看它是否在创建用户时,给关联的partner传递了错误的company_type值。另外,也要检查其他可能修改res.partner或res.users创建逻辑的模块,比如有没有自定义的onchange钩子、默认值设置。

  • 第二步:修复字段默认值
    有可能是res.partner的company_type字段被错误设置了默认值。你可以通过数据库查询确认:

    SELECT default_value FROM ir_fields WHERE name='company_type' AND model='res.partner';
    

    如果结果是'0',直接把它改成'person'(默认个人)或者'company',然后重启Odoo服务。

  • 第三步:临时补丁拦截错误值
    如果暂时找不到错误来源,可以创建一个小模块,在res.partner的创建方法里拦截非法值,自动转换为合法选项:

    from odoo import models, api
    
    class ResPartnerFixCompanyType(models.Model):
        _inherit = 'res.partner'
    
        @api.model
        def create(self, vals_list):
            # 遍历所有要创建的partner数据,修正非法的company_type值
            for vals in vals_list:
                if vals.get('company_type') == '0':
                    vals['company_type'] = 'person'  # 可根据实际需求改为'company'
            return super().create(vals_list)
    

    把这个模块安装到系统里,确保它的加载顺序在其他修改res.partner创建逻辑的模块之后(可以通过模块的depends设置控制)。

  • 第四步:清理已有错误数据
    如果数据库里已经存在company_type='0'的partner记录,需要先清理,避免后续操作触发其他错误:

    -- 操作前务必备份数据库!
    UPDATE res_partner SET company_type='person' WHERE company_type='0';
    

完成这些步骤后,再尝试创建用户应该就能正常执行了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 23:49:11