Openerp 在模块安装时调用函数
如何仅在模块安装(而非更新)上调用函数或执行代码? 有专门的功能吗 我想在模块安装时执行以下代码:Openerp 在模块安装时调用函数,openerp,odoo-8,Openerp,Odoo 8,如何仅在模块安装(而非更新)上调用函数或执行代码? 有专门的功能吗 我想在模块安装时执行以下代码: all_countries = self.env['res.country'].search([]) for country in all_countries: _logger.error(country.name) 我已经实现了一种在安装/卸载时运行任意代码的变通方法,详细内容如下。在您的情况下,编写代码的合适函数是一个来自建议的解决方法的create方法。最好的方法是使用数据文件 将数
all_countries = self.env['res.country'].search([])
for country in all_countries:
_logger.error(country.name)
我已经实现了一种在安装/卸载时运行任意代码的变通方法,详细内容如下。在您的情况下,编写代码的合适函数是一个来自建议的解决方法的
create
方法。最好的方法是使用数据
文件
noupdate=“1”
标志创建数据文件
- 这表示代码应该运行一次,然后再也不运行
- 它将在安装时运行,或者如果模块已安装,则它将在下次升级模块时运行
函数
元素以触发适当的python方法{
...
'data': [
...
'data/data.xml',
...
],
...
}
from openerp import models
import logging
_logger = logging.getLogger(__name__)
class ResCountry(models.Model):
_inherit = 'res.country'
@api.model
def method_name(self):
for country in self.search([]):
_logger.error(country.name)
/data/data.xml
<openerp>
<data noupdate="1">
<function model="res.country" name="method_name"/>
</data>
</openerp>
如果在安装和卸载过程中需要运行某个函数,则链接的代码是最好的,但如果代码只需要运行一次,则链接的代码是多余的。数据文件中的元素与
noupdate=“1”
相结合,很容易达到预期效果。当然,我在实践中也使用了函数
标记,但正如您所指出的,它只能处理安装情况。请注意:我提到的选项可以处理“安装和/或卸载”场景,而不仅仅是“安装和卸载”,因为如果不需要,您可以随意省略create
或unlink
方法之一。