美文网首页程序员
Odoo中的self的使用

Odoo中的self的使用

作者: Lee_7ee1 | 来源:发表于2018-09-13 17:08 被阅读123次

一:self是什么

    目前新版的Odoo中使用到的self,是对  游标cr、用户ID、模型、上下文、记录集、缓存  的封装。

    我们可以通过 self.XX 获取到这些封装的东西,比如:self.cr、self.uid。

    二:通过直接设置属性来改变数据库中字段值

    我们在查出某模型的记录后,可以通过  record.XX = value  来直接修改记录的字段内容。

    同样,在重写模型的write方法中,也可以通过 self.XX = value 来指定新增记录中某字段的值。

    这里需要注意两点:

    1:修改查出来的记录字段值来改变数据库内容,是通过改变缓存中的值出发数据库写记录来达到的。

    2:重写write方法时,在write方法中每调用一次 self.XX = value 语句,都会触发数据库写操作,因此一般采用:

for rec in self:

    rec.XX = XX

     的写法。

     三:环境

    1:操作缓存

    环境储存了模型的缓存记录集,因此我们可以通过环境来获取、增加、修改、删除记录,而触发数据库更改,从而达到操作数据库的目的。

    例如:新增一条记录

self.env['模型'].create(vals)

    2:改变用户权限

    我们可以通过self.sudo()获得超级权限,从而确保我们的操作能够进行。

self.env[‘model'].sudo().create(vals)

    3:访问当前用户

self.env.user

    4:获取XML的ID

self.env.ref('external id')

    5:更新缓存,触发数据库操作

self.env.invalidate_all()

    四:self常用接口

    1:普通查询:返回记录集,后续通过修改记录值来触发数据库修改

self.search(domain) //从当前模型的self中查询

self.env['model'].search(domain) // 获取某个model的环境,查询其中的记录集

    2:只读查询:返回列表,只能提取内容,不能触发数据库修改

self.search_read([],['要查询的字段'])

    3:统计数量:返回符合条件的记录条数

self.search_count(domain)

    4:浏览:通过一系列id值,返回对应的记录集

self.browse([id])

    5:删除

self.unlink(domain)

    五:NEW ids

    Odoo在创建一个新记录时,会使用models.ids虚拟一个记录id。

    可以通过

if is instance(record.id,models.NewId):

    来判断。

  六、数据库查询

importpsycopg2

classXXXXX(models.Model):

        ........

    @api.multi

defOOOO(self):

db = psycopg2.connect("dbname=test4 user=postgres")#查找名叫 test4 的数据库  postgres  是数据库的超级用户名称

        vals = db.cursor()

vals.execute("SELECT sales,prices,sale_date FROM run_chart")#执行sql语句查询数据

tables = vals.fetchall()#返回查询结果

#或者

sql ="select *from 表名"

self.env.cr.execute(sql)#执行SQL语句

dicts = self.env.cr.dictfetchall()#获取SQL的查询结果

转载来自:http://www.cnblogs.com/zcy1103/p/8483646.html

相关文章

  • Odoo中的self的使用

    一:self是什么 目前新版的Odoo中使用到的self,是对 游标cr、用户ID、模型、上下文、记录集、缓存...

  • ODOO 通过 .env进行数据库操作的常见场景

    Environment 是 odoo 中操作db的总句柄,以下几种方式可以获得: 可以直接通过self.env得到...

  • Swift中Self的使用

    Swift中Self的使用 用于消除访问属性,调用方法时所产生的歧义。 当函数的参数名和自身的属性名同名时,例如:...

  • 1.5 Self关键字

    本小节知识点: 类方法中的self 对象方法中的self 全局变量成员变量局部变量 self总结 self使用注意...

  • oc 中 self 、super 的使用

    self 对象方法中的 self 是当前对象,可以访问属性和方法,不能访问类方法类方法中的 self 是类在代码段...

  • PHP中->、::、$this、self的使用

    ->与::在访问PHP类中的成员变量或方法时,如果被引用的变量或者方法被声明成const(定义常量)或者stati...

  • Python类相关东西

    注:self的作用:self会在类的实例化中接收传入的数据, 在代码中运行。类方法中调用类属性需要使用self 每...

  • unable to install wkhtmltopdf wi

    wkhtmltopdf在ubuntu 16.04中默认的包不能在odoo中使用,特此去stackoverflow挖...

  • Odoo配置文件

    Odoo配置文件odoo.conf 源码中默认配置文件目录在 odoo/debian/odoo.conf; adm...

  • 第九章 Odoo 15开发之外部 API - 集成第三方系统

    Odoo 服务端提供有外部 API,可供网页客户端和其它客户端应用使用。本章中我们将学习如何Odoo 的外部 AP...

网友评论

    本文标题:Odoo中的self的使用

    本文链接:https://www.haomeiwen.com/subject/bwfggftx.html