TypeError:类型'int'的参数不可迭代 openerp

-3 投票
1 回答
815 浏览
提问于 2025-04-18 03:07

当我想执行我的 dopy_data,获取对象的值并增加它,然后复制这个对象时,我遇到了这个错误:TypeError: argument of type 'int' is not iterable(类型错误:'int'类型的参数不可迭代)。

class immo_assurance(osv.osv):
    _name = "immo.assurance"
    _description = "Assurance"

    def copy_data(self, cr, uid, id, default=None, context=None):
        if default is None:
        default = {}

        res = 1

        idea = self.browse(cr, uid, id)

        res += int(idea.nContrat)

        #res = default.get('nContrat')

        default['nContrat'] = res

        return super(immo_assurance, self).copy_data(
            cr, uid, id, default=res, context=context)

    _columns = {
                'name':fields.char('Code',size=10,required=True),
                'nContrat':fields.integer('Ndu    contrat',size=60,required=True),
                'dDebut':fields.date('Début'),
                'dFin':fields.date('Fin'),
                'id_societe' : fields.many2one('immo.societe'     ,'Société',required=True),
                'cAnnuel':fields.float('Cout annuel',size=60),              
                'commentaire':fields.char('Commentaires',size=10),
                'articles':fields.one2many('immo.article','assurance','Liste Articles',               readonly=True),
                }           

immo_assurance()

`

1 个回答

0

默认值是一个字典,你不能这样返回:

  super(immo_assurance, self).copy_data(cr, uid, id, **default=res**, context=context)`

default=res* 这样写是不对的

但是

 def copy_data(self, cr, uid, id, default=None, context=None):
    if default is None:
       default = {}
    res = 1
    idea = self.browse(cr, uid, id)
    res += int(idea.nContrat)
    default['nContrat'] = res
    return super(immo_assurance, self).copy_data(
       cr, uid, id, default, context)

撰写回答