显示TypeError:'builtin_function_or_method'对象在Odoo中不可迭代

时间:2017-01-11 22:24:14

标签: python openerp

当我尝试更改odoo中的license_id时,我收到此错误

    @api.multi
    @api.onchange('license_id')
    def del_potential(self):
        _logger.info('Status Approved or not' + str(self.license_id.approval_state))
        _logger.info('Potential FGL' + str(self.partner_potential_fgl_address))
        if self.license_id.approval_state == 'approved':
            so = self.env['sale.order'].browse(id)
            # _logger.info('del_potential id:'+str(so))
            so.partner_potential_fgl_address = False

有人可以指导我为什么会收到此错误吗?

对不起,这应该是我的坏事

so = self.env['sale.order'].browse([self.id])

而不是

so = self.env['sale.order'].browse(id)

1 个答案:

答案 0 :(得分:1)

应该是这样的,

@api.multi
@api.onchange('license_id')
def del_potential(self):
    for rec in self:
        _logger.info('Status Approved or not' + str(rec.license_id.approval_state))
        _logger.info('Potential FGL' + str(rec.partner_potential_fgl_address))
        if rec.license_id.approval_state == 'approved':
            rec.partner_potential_fgl_address = False

这不是必需的,因为self包含可浏览记录集的列表,因此您不需要显式浏览任何ID ..

不要使用

so = self.env['sale.order'].browse([self.id])

改为使用

self.id or self.field_name