Odoo - 无法遍历模型记录

时间:2016-08-09 13:46:48

标签: loops model odoo-9

我想在每次安装或更新模块时调用方法。在那个方法里面我想循环遍历模型记录,但我只是得到了不同的错误。

此文档看起来非常简单: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个给定)”

但也不多说。

1 个答案:

答案 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])