设为首页 加入收藏

TOP

odoo context上下文用法总结(一)
2023-07-23 13:45:40 】 浏览:95
Tags:odoo context 文用法

环境

odoo-14.0.post20221212.tar

context用法总结

获取上下文

>>> self.env.context # 返回字典数据,等价于 self._context
{'lang': 'en_US', 'tz': 'Europe/Brussels'}
>>> self._context
{'lang': 'en_US', 'tz': 'Europe/Brussels'}
>>> recordSet.env.context  # 注意,上下文是和记录集绑定的,上述的self也代表记录集

设置上下文

Model.with_context([context][, **overrides]) -> records[源代码]

返回附加到扩展上下文的此记录集的新版本。

扩展上下文是提供的合并了overridescontext,或者是合并了overrides当前context

# current context is {'key1': True}
r2 = records.with_context({}, key2=True)
# -> r2._context is {'key2': True}
r2 = records.with_context(key2=True)
# -> r2._context is {'key1': True, 'key2': True}

需要注意的是,上下文是和记录集绑定的,修改后的上下文并不会在其它记录集中共享

应用场景示例

用于action,为关联视图添加默认搜索、过滤条件

视图定义

为设置action打开的tree列表视图,添加默认搜索,搜索条件为 state字段值等于True

<?xml version="1.0"?>
<odoo>
    <record id="link_estate_property_action" model="ir.actions.act_window">
        <field name="name">Properties</field>
        <field name="res_model">estate.property</field>
        <field name="view_mode">tree,form</field>
        <field name="context">{'search_default_state': True}</field>
    </record>

    <record id="estate_property_search_view" model="ir.ui.view">
        <field name="name">estate.property.search</field>
        <field name="model">estate.property</field>
        <field name="arch" type="xml">
            <search>
                <!-- 搜索 -->
                <field name="name" string="Title" />               
                <separator/>
                <!-- 筛选 -->
                <filter string="Available" name="state" domain="['|',('state', '=', 'New'),('state', '=', 'Offer Received')]"></filter>               
            </search>
        </field>
    </record>
    <!--此处代码略...-->
</odoo>

说明:

<field name="context">{'search_default_fieldName': content}</field>

search_default_fieldName,其中fieldName 表示过滤器名称,即搜索视图中定义的<field><filter>元素的name属性值

content 如果fieldName为搜索字段<field>name属性值,那么content表示需要搜索的内容,输入内容是字符串,则需要添加引号,形如'test';如果fieldName为搜索过滤器<filter>name属性值,那么content表示布尔值,该值为真,则表示默认开启name所代表的过滤器,否则不开启。

用于搜索视图,添加分组查询条件

视图设计
<?xml version="1.0"?>
<odoo>
    <!--此处代码略...-->
    <record id="estate_property_search_view" model="ir.ui.view">
        <field name="name">estate.property.search</field>
        <field name="model">estate.property</field>
        <field name="arch" type="xml">
            <search>                              
                <!-- 分组 -->
                <group expand="1" string="Group By">
                    <filter string="朝向" name="garden_orientation" context="{'group_by':'garden_orientation'}"/>
                </group>
            </search>
        </field>
    </record>
    <!--此处代码略...-->
</odoo>

说明:'group_by': '分组字段名称'

用于视图对象按钮,传递数据给模型方法

模型设计
#!/usr/bin/env python
# -*- coding:utf-8 -*-

from odoo import models, fields, api

class EstatePropertyType(models.Mode
首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇SICP:赋值和局部状态(Python实.. 下一篇口播神器,基于Edge,微软TTS(text-..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目