
Odoo
问题记录
白鲨莎莎
talk is cheap, show me the code
展开
-
odoo记录集操作
合并记录集实现1 将两个记录集合并为一个并保留排序,使用如下操作:result = recordset1 + recordset22 使用如下操作合并两个记录集并确保结果中没有重复内容:result = recordset1 | recordset23 使用如下操作来查找两个记录集中共同的记录:result = recordset1 & recordset2运行原理针对记录集的类实现了不同的Python运算符的重定义,在此处进行了使用。以下为可用于记录集的最有用的Python转载 2021-05-20 16:27:20 · 902 阅读 · 0 评论 -
odoo 动态选择关联模型
前言对于引用字段,首先我们需要决定关联的目标模型(或comodel)。但有时我们会让用户来做决定,首先选定我们所要的模型然后记录想要关联的记录。实现ref_doc_id = fields.Reference( selection='_referencable_models', string='Reference Document')@api.model def _referencable_models(self): models = self.env['转载 2021-05-20 15:31:56 · 658 阅读 · 0 评论 -
odoo中的关系字段
Many2one定义每本书只有一个出版社,因此在图书和出版社之间可以使用 many-to-one 关联。运行原理Many-to-one字段向模型的数据表中添加了一列,存储关联记录的数据库ID。在数据库级别上,还会创建外键约束,确保保存的ID是对关联表中记录的有效引用 。对这些关联字段不会创建数据库索引,但这可通过添加 index=True 属性来进行完成。属性ondelete属性决定在关联记录删除时执行什么操作。例如,在出版社记录删除后图书会怎么样?默认值为’set null’,,会将该字段转载 2021-05-20 15:20:24 · 859 阅读 · 0 评论 -
odoo中的类属性
_name创建数据表,Odoo ORM会在数据库中创建一张library_book数据表_log_access=False不生成以下的字段:create_date是记录创建的时间戳create_uid是创建该记录的用户write_date是最近记录的编辑时间戳write_uid是最后编辑记录的用户_description描述_order排序,默认正序,倒序desc_order字符串的语法类似于SQL中的ORDER BY语句,但进行了简化。例如,不允许NULLS FIR..原创 2021-05-20 15:07:28 · 167 阅读 · 0 评论 -
odoo中的勾子(hook)函数
定义 有时,业务用例非常复杂,无法通过使用数据文件来进行解决。这些情况下,可以在声明文件中使用init钩子来执行所需要的操作。使用方法按照如下步骤来添加post_init_hook:在__manifest__.py文件中通过post_init_hook键来注册这个钩子:...'post_init_hook': 'add_book_hook',...在__init__.py文件中添加add_book_hook()方法:def add_book_hook(cr, registry):转载 2021-05-20 14:05:06 · 795 阅读 · 0 评论 -
odoo报表
定义odoo中的报表,是创建一张数据库视图。数据库视图和表的联系和区别联系:数据库中的数据都是存储在表中,视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。区别:1、视图是已经编译好的sql语句。而表不是2、视图没有实际的物理记录。而表有。3、表是内容,视图是窗口4、表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能有创建的原创 2021-05-10 15:59:07 · 1137 阅读 · 1 评论 -
odoo中存档功能的实现
前言odoo中有一个魔法字段:active, 只要在模型中使用了这个字段,动作下面会自动添加存档和取消存档按钮,存档了的默认页面不可见实现方法原创 2021-03-26 22:18:44 · 1210 阅读 · 0 评论 -
odoo 默认数据---many2many
默认数据一般放在data文件夹下代码 <record id="subject_data3" model="finance.fund.type"> <field name="name">信息流</field> <field name="flow_ids" eval="[(4, ref('sf_pay_apply.flow_ad_pay_apply')), (4, ref('sf_wipeoff_req原创 2021-03-15 19:45:26 · 424 阅读 · 0 评论 -
【ORM】 odoo常用orm
实现原理api 模块中的 Environment 类,我们就是要用这个初始化出一个 env 来操作数据库,不过 Odoo 已经在启动命令行时帮助我们将这个 env 初始化好了。我们可以利用 env 来得到我们的数据库模型,并且操作数据库表。Environment 通过ORM存储各种环境中的数据:数据库游标(数据库查询) 、当前用户 (用来权限检查)、当前环境(存储任意的元数据)。环境可以被存储在缓存中。所有的记录集都有一个不可变的环境,它可以通过 env 访问,通过 (user), 游标 (cr)原创 2021-02-17 14:20:02 · 599 阅读 · 0 评论 -
odoo动作详解
一 odoo动作一览图二 动作分类窗口动作(ir.actions.act_window )最常用的action类型,用于打开模型的各种视图。定义方式一:<act_window id="act_bangumi_view" name="Bangumi" res_model="bangumi.bangumi" # 需要在view里显示数据的model。 view_mode="tree,kanban,form" view_id=原创 2021-02-17 14:17:23 · 2302 阅读 · 2 评论 -
【装饰器】 odoo常用装饰器
1 @api.model此时的self仅代表模型本身,不含任何记录信息。当你认为这段代码跟self中的数据无关时,就加上@api.model装饰器,有点像类中的类方法2 @api.multimulti则指self是多个记录的合集。因此,常使用for—in语句遍历self。multi通常用于:在tree视图中点选多条记录,然后执行某方法,那么那个方法必须用@api.multi修饰,而参数中的self则代表选中的多条记录。如果仅仅是在form视图下操作,那么self中通常只有当前正在操作的记录。3原创 2021-02-17 14:09:16 · 776 阅读 · 0 评论 -
【继承】 odoo几种继承方式
一 原模型继承 /(in-place继承) /(类继承)新类继承父odoo模型的所有功能,仅需在其中声明要做的修改。在任何地方使用该模型修改都可用。关键字:_inherit (_name和_inherit相同,所以省略了_name,如下)二 原型继承_name 是模型标识符,修改会创建所继承模型的拷贝,成为一个新模型。这叫作原型继承。三 代理(delegation)继承 /(委托继承)使用代理继承时,原模型的方法并不能被继承。只能继承字段,可以读写子模型的字段。类似_inherits =原创 2021-02-17 14:06:35 · 1826 阅读 · 0 评论 -
odoo中_sql_constraints[]和@api.constrains的区别
在日常开发Odoo的过程中,我们不免要用到Constraints,中文就是约束。首先我们来介绍下Odoo里面的两种Constraints。一 _sql_constraints:就是添加一个数据库的约束。_sql_constraints是odoo的属性,是一个元祖的列表,每个元祖是一个数据库约束。元祖的第一个元素是约束名字,第二个元素是约束规则(postgresql约束规则),第三个参数是如果违反约束弹出来的警告信息。_sql_constraints = [ ('name_uniq',转载 2020-12-05 10:02:22 · 2178 阅读 · 0 评论 -
【继承】 odoo 动作菜单的继承
如下:原创 2020-07-10 10:03:02 · 627 阅读 · 0 评论 -
odoo 重写name_get实现不同模型显示不同名称
解决思路:通过在菜单动作的上下文里加入一个标识,然后在name_get中通过上下文的标识去判断具体实现:1 在视图的上下文中加入标识2 在name_get中进行判断原创 2020-07-10 09:52:15 · 609 阅读 · 0 评论 -
odoo查看用户有没有某个权限
查看用户在不在某个权限组:self.env.user.has_group("权限组id ")原创 2020-07-10 09:34:08 · 852 阅读 · 0 评论 -
【内置方法】odoo中可重写的内置方法
一 create(self,vals)根据视图传过来的dict对象,生成模型记录。点击保存时生效。需要自动生成编码 和 点击保存时需要触发一些方法时重写。写法如下:二 write(self,vals)记录的修改函数,参数也是dict。很少重写。三 read(self,fields)记录的查看函数,参数是查看哪些字段,默认是全字段,很少重写。四 unlink(self)记录的...原创 2020-04-04 17:03:29 · 3740 阅读 · 2 评论 -
odoo的字段属性
1 store=True,计算字段要加2 readonly=True,设置字段只读3 index=True,增加数据库索引,提高搜索查找速度4 required=True设置字段必填5 size=64,char类型字段设置字符大小?6 default=False,默认值7 oldname=" "8 related=‘ ’ , 关系字段9 compute ...原创 2019-12-10 11:11:17 · 1294 阅读 · 0 评论 -
【视图】 odoo透视图(pivot)
这里写自定义目录标题odoo透视图odoo透视图1 模型字段定义2 视图定义3 页面展示原创 2019-12-10 11:00:09 · 2135 阅读 · 1 评论 -
odoo开发:数据唯一性的实现
实现语句:_sql_constraints = [(‘字段名_uniq’, ‘unique(字段名)’, u’该号码已存在!’)]如:定义的字段:frame_number = fields.Char(string=u’车架号’)在定义的字段后面加上:_sql_constraints = [(‘frame_number_uniq’, ‘unique(frame_number)’, u’...原创 2019-02-21 15:56:52 · 878 阅读 · 0 评论 -
odoo环境安装问题
1 no module named ‘yaml’解决办法:pip3 install PyYAML2 no module named ‘qcloud-css’解决办法:pip3 install cos-python-sdk-v53 odoo12找不到sass,没有样式解决办法:pip install libsass4 No module named win32service解决办法:p...原创 2019-02-21 14:17:11 · 1921 阅读 · 0 评论 -
odoo环境的安装(windows)
1 安装python,在安装时记得点击将路径加入到系统变量中,不然还要手动添加安装完成后在命令行输入python,出现如下信息表示安装成功2 安装postgresql (http://www.postgresql.org/download/windows/)postgresql是一个免费的对象-关系数据库服务器(数据库管理系统)3 安装pgAdmin(https://www.pgadm...原创 2019-01-09 10:16:18 · 452 阅读 · 0 评论 -
odoo删除数据库后出现的KeyError:'ir.http'错误解决办法
1 删除数据库后出现的错误2 首先检查一下配置文件,尤其是路径3 然后在Run /Debug Configurations 里输入 -i base -d 新数据库名4 重启服务器看可不可以,如果还不行就重装下数据库,更改一下数据库的版本,如果重装数据库还不行就重新载入源码,可能是不小心改动了源码...原创 2019-01-08 09:30:14 · 3978 阅读 · 0 评论