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

如何在Odoo 18中用post_init_hook自动勾选设置复选框

在Odoo 18中通过post_init_hook自动启用设置复选框

要实现模块安装时自动启用指定设置(比如库存的多步骤路线),可以通过以下步骤利用post_init_hook完成:

1. 定义初始化钩子函数

在自定义模块的__init__.py文件中编写钩子函数,使用超级管理员权限修改系统设置:

from odoo import api, SUPERUSER_ID

def enable_target_settings(cr, registry):
    # 创建超级管理员环境
    env = api.Environment(cr, SUPERUSER_ID, {})
    # 初始化设置模型记录
    config_settings = env['res.config.settings'].create({})
    # 写入需要启用的设置字段,这里以多步骤路线为例
    config_settings.write({
        'group_stock_multi_steps': True,
        # 可添加其他需要自动启用的字段,比如:
        # 'group_stock_lot': True
    })
    # 执行设置应用,使修改生效
    config_settings.execute()

2. 在模块清单中注册钩子

打开模块的__manifest__.py,添加post_init_hook字段关联刚才定义的函数:

{
    'name': '自定义模块名称',
    'version': '1.0',
    'depends': ['stock'],  # 依赖库存模块(如果修改库存设置)
    'data': [
        # 模块的视图、数据文件等
    ],
    'post_init_hook': 'enable_target_settings',
    # 其他清单字段...
}

关键说明

  • 字段确认:要确保使用正确的字段名,比如库存多步骤路线对应的字段是group_stock_multi_steps。你可以开启开发者模式,进入设置页面后右键检查元素,查看复选框的name属性,或者直接查看res.config.settings模型的字段定义。
  • 权限问题:必须使用SUPERUSER_ID,因为安装模块时需要最高权限修改系统配置。
  • 生效逻辑:res.config.settings是临时模型,修改字段后必须调用execute()方法,Odoo才会将设置同步到对应的用户组或系统参数中。
  • 执行时机:post_init_hook仅在模块首次安装时执行,模块更新时不会触发。如果需要更新模块时也执行,可以考虑使用其他钩子或升级脚本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 08:42:37