Odoo Shell Command

Administrator

前言

在Odoo8.0的时候,有开发者做了一个shell模块。

是的,作为一个拥有几千名开发人员的开源系统,哪能没有shell工具呢?这些开发人员在开发别的系统时用过shell,转到Odoo的开发上肯定也想有这个功能。

这不,到了Odoo9.0,官方就增加了Shell Command

我通常开两个Xshell5的窗口,一个用来运行Odoo,一个用来运行Odoo shell。

运行Odoo shell的命令是:  ./odoo-bin shell -d demo -c odoo10.conf,其中demo是数据库名。

shell环境下,有几点内容要记住:

1、self,表示管理员这个用户记录,即 res.users(1,)

2、self._name,表示用户模型名,即 'res.users'

* * * 宅男分割线 * * *

我们在做Odoo开发的时候,假设要对一个字符串进行切片,长时间没切有点拿不准,怎么办?肯定不是写到程序里,然后试验。我们可以打开python的交互环境切一下试试。

假如有一天我们拿不准更新一个Datetime类型的字段到底可不可以使用Date类型的格式,那么我们可以通过shell先确认一下。

>>> self.env['sale.order'].search([]).write({"date_order":"2017-09-10"})
True

上面的代码告诉我们可以这么干。


再举个例子:有一些模型的某些字段并没有显示到界面上,而我们又想知道字段的值怎么办?

很多人默默的打开了pgAdmin,或者其他的一些数据库管理软件。

这是对的!!!

因为,界面上操作引起的数据的变化,在Shell中是不能体现出来的!

为啥呢?因为打开的shell是一个新SQL事务。所以,你可以用Ctrl+D退出当前shell,然后重新运行。

界面变化,我们知道如何从shell中看到。那么shell中的变化,如何反映到界面上呢?例如,我们运行了下面一句,但是无论怎么刷新界面都看不见更改的新电话

>>> self.env['hr.employee'].search([]).write({"work_phone":"110"})
True

还需要执行一句:

>>> self.env.cr.commit()

commit之后,就成了一个新事务,一切都是新的。

注意:没有更改的话,commit是无效的。



留下评论

你应该 登入 张贴评论