首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

odoo ORM API学习总结兼orm学习教程

必须重写create,以确保始终触发约束(例如,测试是否缺少值) odoo.api.depends(*args)[源代码] 返回一个装饰器,该装饰器指定compute方法的字段依赖关系(对于新型函数字段...可能仅通过一个字典或者字典列表调用该方法: record = model.create(vals) records = model.create([vals, ...]) odoo.api.onchange...返回 字典列表(每条记录一个字典)。...注意:返回字典key不包含Odoo系统自动生成的模型表字段:create_uid,create_date,write_date,write_uid,id 字段/视图(Fields/Views)s Model.fields_get...0 record A” “This is model 1 record B” 第二个模型继承了第一个模型的check方法及其name字段,重写了call方法,就像使用标准Python继承一样。

13.2K10

odoo 开发入门教程系列-模块交互

现在,重写操作,仅返回super调用,拿个例子来说可能更清楚: from odoo import models class InheritedModel(models.Model): _inherit...action_sold 方法(你可能已经将该方法命名为不同的名称了) 以返回 super 调用 提示: 为了确保它正常工作,添加一个print 或者调试断点到重写的方法中。...如果重写生效,我们可以继续创建发票。不幸的是,没有一种简单的方法可以知道如何在Odoo中创建任何给定的对象。大多数时候,有必要查看其模型,以找到所需的字段并提供适当的值。...Invoice对应 提示: 使用 self.env[model_name].create(values)创建一个对象, 其中values 为一个字典。...create 方法不接受结果集作为字段值。

1.5K10
您找到你想要的搜索结果了吗?
是的
没有找到

odoo Web Controllers 学习总结

环境 odoo-14.0.post20221212.tar Web Controllers Controllers 控制器需要提供可扩展性,就像Model,但不能使用相同的机制,因为先决条件(已加载模块的数据库...def handler(self): return stuff() 要重写控制器,继承其类并重写相关方法,必要的话,重新暴露它们。...Extension, self).handler() 用route() 修饰是保持方法(和路由)可见的必要条件:如果方法在没有修饰的情况下被重新定义,它将是“未发布的” 所有方法的修饰符都是组合的,如果没使用任何参数重写方法修饰符...Exception as e: return json.dumps({'code': 500, 'msg': '%s' % e}, ensure_ascii=False) 注意:不能直接返回...json字典,bool值等,会提示不可返回不可调用对象,但是可直接返回字符串,或者返回字符串的函数,如下: class TestApi(http.Controller): @http.route

1.3K20

odoo context上下文用法总结

环境 odoo-14.0.post20221212.tar context用法总结 获取上下文 >>> self.env.context # 返回字典数据,等价于 self....# 注意,上下文是和记录集绑定的,上述的self也代表记录集 设置上下文 Model.with_context([context][, **overrides]) -> records[源代码] 返回附加到扩展上下文的此记录集的新版本...> 说明:context属性值中的字典的键值如果为模型中定义的字段名称,则该字段名称必须以元素的形式,出现在模型对应的视图(即不能是内联视图,比如内联Tree列表)中,否则会出现类似错误提示...fields.One2many("estate.property.offer", "property_id", string="PropertyOffer") # ...此处代码略 # 重写父类...(self, vals_list): # 通过重写模型的create或者write方法,调用该方法前修改上下文,然后在方法中通过self.env.context获取上下文中的目标key值,进而实现目标需求

2K20

odoo 开发入门教程系列-继承(Inheritance)

继承(Inheritance) Odoo的一个强大方面是它的模块化。模块专用于业务需求,模块也可以相互交互。这对于扩展现有模块的功能非常有用。...create() 方法来说是必需的,因为结果集self的内容和创建(creation)的上下文无关,该装饰器对于其它CRUD方法来说不是必需的。...总是返回和父方法一致的数据。...例如父方法返回一个dict(),你重写父方法时也要返回一个dict() 练习--添加业务逻辑到CRUD方法 如果房产记录状态不是New,Canceled,则不让删除 提示:重写unlink() ,并记住...目标: 在用户表单视图中显示与销售人员关联的avaliable房产列表其用户表单视图 Odoo提供了视图继承,其中子“扩展”视图应用于根视图之上,而不是就地修改现有视图(通过重写它们)。

2.2K20

odoo 开发入门教程系列-计算的字段和变更(Computed Fields And Onchanges)

虽然本章在技术上并不复杂,这两个概念的语义都非常重要。这也是我们第一次编写Python逻辑。到目前为止,除了类定义和字段声明之外,我们还没有编写任何其他东西。...在我们的房产示例中,我们可以定义报价的有效期间并设置有效日期。我们希望能够设置有效期间或日期,并且两者之间相互影响。...为了支持这个需求,odoo提供了使用inverse函数的能力: from odoo import api, fields, models class TestComputed(models.Model...定义一个适当的inverse函数这样,以便用户可以编辑 create_date或 validity。...虽然这通常很方便,请注意给模型增加的潜在计算压力。让我们重新使用我们的示例。

3.1K30

odoo 给列表视图添加按钮实现数据文件导入

'action_type': 'reload', # 导入成功后,希望前端执行的动作类型, reload-刷新tree列表, do_action-执行action } 说明: 函数返回值...,具体需要返回啥,实际取决于下文js实现(上传成功后需要执行的操作),这里结合实际可能的需求,额外提供另外几种返回值供参考: 形式1:实现替换当前页面的效果 return { 'action_type...context: this.initialState.context, }).then(function(result) { // result为一个字典..._rpc函数中的model参数值("estate.customer"),method参数值("create_customer_from_attachment"),必要的话,修改then函数实现。...\service_mixins.js中),用于查找当前action管理器并执行action -- do_action函数的第一个参数,格式如下: { 'type': 'ir.actions.act_window

3.4K30

odoo 权限管理学习总结

可以在Settings -> Users & Groups -> Groups界面看到,组定义相关数据存储在res_groups表中 eval语法说明 (0, 0, values) 从提供的valueS字典创建新记录...(2, ID, values) 使用values字典中的值更新id值=ID的现有记录 (2, ID) 删除id=ID这条记录(调用unlink方法,删除数据及整个主从数据链接关系) (3, ID) 删除主从数据的链接关系但是不删除这个记录...,access_estate_property_group_estate_property_create,model_estate_property,group_estate_property_create...=False or perm_create!=False or perm_unlink!...developer/reference/addons/security.html#field-access 扩展:在页面从数据库加载视图时,会通过load_view接口,会调用fields_view_get方法,可以重写此方法以控制

10K20

odoo wizard界面显示带复选框列表及勾选数据获取

wizard可以通过关系字段(many2one或many2many)引用常规记录或wizard记录,常规记录不能通过many2one字段引用wizard记录 详细代码 注意:为了更清楚的表达本文主题...''' # ...存储收到的数据(假设仅存储data部分的数据),代码略 return True # 注意,执行成功则需要配合前端实现,返回...action_select_records_via_checkbox函数接收的args参数,其类型为字典,形如以下,其中f412cde5-1e5b-408c-8fc0-1841b9f9e4de为UUID...odoo14\custom\estate\static\src\js\list_renderer.js 注意:之所以将uuid函数定义在list_renderer.js中,是为了避免因为js顺序加载问题...,可能导致加载list_renderer.js时找不到uuid函数定义问题。

5.2K60

odoo 开发入门教程系列-模型之间的关系(Relations Between Models)

一个房产可以有一个类型,同一类型可以分配给多个房产。这得到了many2one概念的支持。 many2one是指向另一个对象的简单链接。...custom/estate/security/ir.model.access.csv id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create..._context 上下文字典 self.env.ref(xml_id) 返回和XML id对应的记录 self.env[model_name] 返回给定模型的实例 修改odoo14\custom\estate...estate\security\ir.model.access.csv,内容如下: id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create...报价适用于一个房产,同一个房产可以有多个报价。many2one的概念再次出现。然而,在本例中,我们希望显示给定地产的报价列表,因此我们将使用one2many概念。

4.3K40

odoo 开发入门教程系列-一些用户界面

这是因为,在odoo中加载CSV文件比加载XML文件更快。 odoo中,用户接口(action,菜单和视图)大部分是通过创建和组装XML文件中的记录来定义的。...> 修改odoo14/custom/estate/__manifest__.py #!...> 修改odoo14/custom/estate/__manifest__.py #!...Odoo有许多微调方式,通常第一步是确保: 某些字段有默认值 某些字段只读 当记录重复时,某些字段不能被拷贝 在我们的房产业务案例中,我们希望:: 售价只读(往后将自动填充) 当记录重复时,可用日期和售价不能被拷贝...字段定义中,添加 default=X, 其中的X 可以是Python文本值(boolean, integer, float, string) ,也可以是一个以model对象自身为入参并返回一个值的函数

2.8K30

Python的Django框架实现数据库查询(不返回QuerySet的方法)

(name='上海财经大学', price='1877') 使用get_or_create()方法重写的栗子: # 查看课程的name="上海交通大学", 如果不存在, 那么创建一条name="信息科技大学...仅是更新一下对象,不需要为对象做其他事情,最有效的方法是调用update(),而不是将模型对象加载到内存中去。...(name='北京大学') 使用update_or_create()方法重写: # 查找课程name="财经大学"是否存在, 如果存在,将name跟price字段进行更新, 若不存在创建新的记录 obj...(平均值、总和等),通过QuerySet进行计算,每个参数指定返回字典中将要包含的值。...(count)和模型字段(name)生成 再举个栗子: 使用关键字参数来指定聚合函数,可以控制返回的聚合的值的名称。

2.5K30

TypeScript实现Map与HashMap

字典中添加元素(set) set方法接收两个参数:key & value 判断参数的有效性,key & value不为null | undefined时向字典中添加元素,否则直接返回false 参数有效时...返回 keys | values 迭代字典中的数据(forEach) forEach方法接收一个回调函数作为参数,其回调函数有两个参数:key & value 获取字典中的所有数据 遍历获取到的数据,调用回调函数参数将当前遍历到的对象的...key和value传给回调函数,用一个变量(result)保存其结果 如果result为false时,代表字典中的元素已经遍历完,退出循环 获取字典的大小 (size),调用keyValues方法,返回其数组长度...向哈希表中添加元素(put) 跟字典的实现一样,同样也是接收两个参数,判断其是否有效 以key为参数,调用hashCode函数(我们自己来实现)计算其hash值 将得到的哈希值作为key存进哈希表中,其值与字典的保持一致...接下来,我们就来看下用线性探查解决冲突,需要重写哪些方法 重写put方法 与HashMap一样,需要判断其参数的有效性以及传的参数数量 计算key的hash值,用一个变量存起来(position) 判断

1.2K30

Python编写渗透工具学习笔记一 | 0x01 目录扫描程序

DirScanMain(options)对象,然后执行start方法,在start方法中拼接好url,结合threading和queue多线程编程,实例化DirScan(queue,total)对象,自动执行重写后的...函数,实时打印出扫描的进度 发现问题 其实这里我们只使用返回的状态码是否为200来判断目录是否存在精确度是不够的 例如我们扫描一下百度的页面,查看扫描结果 但是点开其中的一些链接,会发现这些页面其实都是不存在的...,状态码按道理来说应该是302,至于为什么这里实际上是会返回200,具体原因我也不知道,肯定是百度对这个做了一些处理。...,然后在后来的扫描中,返回长度等于这个长度的判定为404 Tips:这里修改脚本的时候注意一下各种变量在类和函数中的传递过程,注意一下变量的作用范围,引用范围。...修改后的脚本我命名为DirScan_youhua.py 对比测试一下,先运行DirScan.py 说明一下这里我把字典设置为只有这个链接是有效的 http://www.baidu.com/home/news

1.5K70
领券