我想在每次安装或更新模块时调用方法。在那个方法里面我想循环遍历模型记录,但我只是得到了不同的错误。
此文档看起来非常简单:https://www.odoo.com/documentation/9.0/reference/orm.html
但它对我不起作用。我收到了这个错误:
ParseError:“'account.tax'对象在解析时没有属性'_ids'”
这就是我调用方法的方法:
<openerp>
<data>
<function model="account.tax" name="_my_method" />
</data>
</openerp>
我从第一个答案中得到了这个:https://www.odoo.com/forum/help-1/question/how-can-i-execute-a-sql-statement-on-module-update-and-installation-6131
我的模特:
class my_account_tax(models.Model):
_name = 'account.tax'
_inherit = 'account.tax'
def _my_method(self, cr, uid, ids=None, context=None):
self.do_operation()
def do_operation(self):
print self
for record in self:
print record
它基本上是来自文档的复制粘贴。我只添加了方法参数cr,uid,..如果我把它们带走(并且只是离开'self'),错误就会有所不同:
ParseError:“_ my_method()只取1个参数(3个给定)”
但也不多说。
答案 0 :(得分:2)
使用新的api
@api.multi #if you use the new api you don't have to list all parameter in the function
def _my_method(self):
但你可以保持这样,并在你的模型上做一个池而不是循环抛出你不得使用self的结果
如果你使用新的API使用:self.env['model_name'].search([domain])