首页 > 其他分享 >上下文(context)在odoo14中的作用以及功能。并举例说明 。最后再总结一下。所能用到的场景。并归纳总结

上下文(context)在odoo14中的作用以及功能。并举例说明 。最后再总结一下。所能用到的场景。并归纳总结

时间:2023-07-19 16:33:07浏览次数:43  
标签:总结 设置 default odoo14 缺省值 参数 context name

在 Odoo 中,上下文(context)是一个非常重要的概念。Context 是一个 Python 字典,它在各种方法之间传递,并且可以影响这些方法的行为。

Context 的主要作用和功能:

  1. 传递参数:在执行方法的过程中,可以通过 context 传递参数。这些参数可以影响方法的行为。

  2. 本地化:context 中有一些特殊的关键字,可以用来设置当前用户的语言、时区等信息,从而实现本地化。

  3. 缺省值:context 中的 'default_' 关键字可以用来设置创建新记录时的缺省值。

  4. 环境信息:context 中还可以保存一些环境信息,比如当前用户的公司、当前的日期等。


举例说明:

1、传递参数:

# 使用 context 传递 'no_reset_password' 参数
self.env['res.users'].with_context(no_reset_password=True).create(vals)

在这个例子中,我们在创建新用户的时候,通过 context 传递 'no_reset_password' 参数,告诉 create 方法不需要重置密码。

假设你正在写一个定时任务,该任务需要在特定时间执行一些特殊操作。你可以使用 context 传递一个标记给方法,告诉它这是一个定时任务,不需要执行一些通常的检查。

# 使用 context 传递 'is_scheduled_task' 参数
self.env['my.model'].with_context(is_scheduled_task=True).my_method()

my_method 中,你可以检查 'is_scheduled_task' 参数,并根据它的值改变你的逻辑。

 

 

2、设置缺省值:

# 使用 context 设置 'default_name' 缺省值
self.env['res.partner'].with_context(default_name='John').create(vals)

在这个例子中,我们在创建新合作伙伴的时候,通过 context 设置 'default_name' 缺省值为 'John'。

 

假设你正在为一个商店创建新的产品,你可能希望所有的新产品默认都是可销售的。你可以使用 context 设置 'default_sale_ok' 参数。

# 使用 context 设置 'default_sale_ok' 缺省值
self.env['product.product'].with_context(default_sale_ok=True).create(vals)

在这个例子中,所有新创建的产品都将默认为可销售。

 

 

3、本地化:

假设你正在为一个多语言的应用编写代码,你可能需要在每个请求中设置用户的语言。这样,你就可以确保每个用户都看到的是他们自己的语言。

# 使用 context 设置 'lang' 参数
self.env['res.partner'].with_context(lang='fr_FR').name_get()

在这个例子中,name_get 方法将会以法语返回合作伙伴的名字。

 

4、环境信息:

假设你正在为一个有多个公司的 ERP 系统编写代码,你可能需要在每个请求中设置用户的公司。这样,你就可以确保每个用户只能看到他们自己公司的信息。

# 使用 context 设置 'allowed_company_ids' 参数
self.env['res.partner'].with_context(allowed_company_ids=[1, 2]).name_get()

在这个例子中,name_get 方法只会返回公司 1 和 2 的合作伙伴的名字。

 

 

所能用到的场景:

  • 当你需要传递一些额外的参数给方法,但是你不想修改这个方法的签名的时候,可以使用 context。

  • 当你需要设置一些全局的环境信息,比如当前用户的语言、时区等的时候,可以使用 context。

  • 当你需要设置新记录的缺省值的时候,可以使用 context。

总结:

在 Odoo 中,context 是一个非常强大的工具。它不仅可以用来传递参数,设置缺省值,还可以用来保存环境信息。然而,context 也是一个双刃剑,如果使用不当,可能会引入一些难以预见的问题。因此,在使用 context 的时候,需要非常小心,并且始终记住,只有当你无法通过其他方式实现你的需求的时候,才应该使用 context。

 

标签:总结,设置,default,odoo14,缺省值,参数,context,name
From: https://www.cnblogs.com/lyt263/p/17565981.html

相关文章

  • CSP 总结
    CSP-J2022A乘方直接把\(a=1\)特判掉,开\(\mathrm{long~long}\)暴力乘。voidsolve(){lls=1,a,b;cin>>a>>b;if(a==1){cout<<1<<endl;return;}REP(i,b){s*=a;if(s......
  • ClickHouse多种实时更新方法总结
    ClickHouse本身对update的执行是低效的,因为ClickHouse的MergeTree存储一旦生成一个DataPart,这个Part就不支持更改,而是需要删除旧Part,重写整个Part。所以从MergeTree存储内核层面,ClickHouse就不擅长做数据更新删除操作。本文讲述的方法包括采用系统自带的Update,采用Replacing......
  • 基于200篇文献的中式英语常见错误人工总结(学习总结和视频放送)
    TheMostCommonHabitsfrommorethan200EnglishPaperswrittenbyGraduateChineseEngineeringStudentsByFeliciaBrittman这篇文章通过示例,一对一的指出原文写法错误是什么,应该怎么写,为什么会出现这个错误,并给出一些修改建议。可以作为自己写作前指导或写作后检查指导。......
  • 大语言模型的预训练[5]:语境学习、上下文学习In-Context Learning:精调LLM、Prompt设计
    大语言模型的预训练[5]:语境学习、上下文学习In-ContextLearning:精调LLM、Prompt设计和打分函数(ScoringFunction)设计以及ICL底层机制等原理详解1.In-ContextLearning背景与定义背景大规模预训练语言模型(LLM)如GPT-3是在大规模的互联网文本数据上训练,以给定的前缀来预测生......
  • .net 事务(_dbContext、Database)
     //开启事务vartran=_dbContext.Database.BeginTransaction();try{ _dbContext.SaveChanges();//提交事务tran.Commit();}catch(Exceptionex){......
  • [转] C# SuperSocket 服务端使用总结
    简介SuperSocket是一个轻量级,跨平台而且可扩展的.Net/MonoSocket服务器程序框架。你无须了解如何使用Socket,如何维护Socket连接和Socket如何工作,但是你却可以使用SuperSocket很容易的开发出一款Socket服务器端软件,例如游戏服务器,GPS服务器,工业控制服务和......
  • 代码随想录算法训练营第57天 | ● 647. 回文子串 ● 516.最长回文子序列 ● 动
     第九章 动态规划part17●  647. 回文子串  ●  516.最长回文子序列●  动态规划总结篇 今天 我们就要结束动态规划章节了,大家激不激动!!!   详细布置   647. 回文子串    动态规划解决的经典题目,如果没接触过的话,别硬想 直接看题解。https:......
  • 7.19总结
    上午起的比较早,五点半起来了,吃了饭去姥姥家一趟,回来后在床上躺了会,看了一下假期前老师发的那个java测试题,大约读了一遍,了解了一下功能需求,其实对于目前的我的来说,感觉还是有些难,希望小学期做完那几个程序系统会给我带来点提升吧。下午就摆了,看了会大道至简,里面有些看不懂,反正今天......
  • position属性总结
    1.position:relative;相对定位1>不影响元素本身特性(无论区块元素还是内联元素会保留其原本特性)2>不会使元素脱离文档流(元素原本位置会被保留,即改变位置也不会占用新位置)3>没有定位偏移量时对元素无影响(相对于自身原本位置进行偏移)4>提升层级(用z-index样式的值可以改变一......
  • 20230718巴蜀暑期集训测试总结
    T1做了\(3h\),时间复杂度不对,小样例都还有一个没过。考虑容斥,不连通的情况枚举\(1\)号点所在连通块。设\(f_{S,i}\)表示\(S\)连通且选了\(i\)条边的方案数。设\(inb_s\)表示\(S\)内部的边数。那么有转移:\[f_{S,i}=\binom{inb_S}i-\sum_{T\subsetneqqS,1\inT}......