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

ODOO技术咨询:create_uid为何始终为1?能否修改默认值?

ODOO中create_uid始终显示为1的原因及修改方案

碰到这个问题我太有经验了!之前帮好几个朋友排查过类似的情况,给你拆解下背后的原因,以及对应的解决办法:

为什么create_uid一直是1?

  • 最常见的锅是误用了超级用户权限:哪怕你用新用户登录,但如果在创建数据的代码里调用了sudo()方法(比如self.sudo().create(vals)),系统会强制以超级用户(admin,ID固定为1)的身份执行创建操作,自然create_uid就会被设成1。
  • 权限配置不到位:如果你的新用户没有对应模型的创建权限,极端情况下系统可能会 fallback 到超级用户来完成操作(不过正常来说ODOO会直接弹出权限不足的提示,这种情况比较少见)。
  • 自定义模块的代码bug:要是你自己开发了模块,有可能在重写create方法时硬编码了create_uid = 1,或者重写时没正确调用父类的create方法,导致用户信息没有被正确传递。

能不能修改?当然可以!对应不同原因来解决:

  • 去掉不必要的sudo():检查你的业务代码,凡是创建记录的地方,如果没有特殊的超级用户需求,把sudo()删掉,改成普通的create()调用,这样系统就会用当前登录用户的ID来填充create_uid。
  • 给新用户配置正确权限:进入ODOO的「设置」-「用户与权限」-「权限组」,确保你的新用户所属的权限组拥有对应模型的「创建」权限,这样用户就能用自己的身份创建数据了。
  • 修复自定义代码的bug:
    • 如果代码里有硬写vals['create_uid'] = 1的情况,直接删掉这行;
    • 如果重写了create方法,一定要记得调用父类的方法,比如:
      def create(self, vals):
          # 这里放你的自定义逻辑
          return super(YourModelName, self).create(vals)
      
      这样才能保证用户信息被正确传递到创建流程中。
  • 检查批量导入/定时任务的上下文:如果你是通过批量导入或者定时任务创建数据,要确认这些工具的配置有没有强制设置用户ID为1,有的话改成使用当前执行用户的ID即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:47:58