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

Odoo 14社区版:如何在URL参数中添加上下文并在模型/视图中获取数据?

在Odoo中通过URL传递上下文参数到视图的方法

Odoo支持通过URL直接访问指定视图,比如示例URL:

{host}/web#id=23&action=985&model=product.template&view_type=form&cids=1&menu_id=688

会直接跳转到对应产品的表单页。如果要给自定义模型的树形视图通过URL传递上下文参数,按以下方法操作:

正确的URL参数格式

直接在URL后添加未编码的context={'my_context':'123'}会被Odoo自动移除——原因是URL中的特殊字符(如大括号、引号)会被浏览器解析为无效内容,且JSON格式要求使用双引号而非单引号。

正确的做法是对上下文JSON进行URL编码,步骤如下:

  1. 把上下文写成标准JSON格式:{"my_context":"123"}
  2. 对该字符串进行URL编码,得到:%7B%22my_context%22%3A%22123%22%7D
  3. 将编码后的字符串作为context参数添加到URL中

示例完整URL:

{host}/web#action=你的动作ID&model=自定义模型名&view_type=tree&context=%7B%22my_context%22%3A%22123%22%7D&cids=1&menu_id=你的菜单ID

生成编码上下文的快捷方式

可以在浏览器开发者工具的控制台中执行以下命令,直接生成编码后的字符串:

encodeURIComponent(JSON.stringify({"my_context":"123"}))

在模型/视图中使用上下文参数

  • 在视图中:比如在树形视图的domain中引用上下文:
    <field name="domain">[('target_field', '=', context.get('my_context'))]</field>
    
  • 在模型方法中:通过环境上下文获取参数:
    def my_method(self):
        my_context_val = self.env.context.get('my_context')
        # 后续逻辑处理
    

关于cids参数的说明

cids是数据库ID(Database ID),用于指定当前访问的Odoo数据库,和传递上下文参数无关,无需修改它。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 17:17:22