Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使odoo计算关系字段在导入时自行计算?_Python_Python 3.x_Orm_Odoo_Python Import - Fatal编程技术网

Python 如何使odoo计算关系字段在导入时自行计算?

Python 如何使odoo计算关系字段在导入时自行计算?,python,python-3.x,orm,odoo,python-import,Python,Python 3.x,Orm,Odoo,Python Import,我在视图开始、结束、忽略和范围中添加了四个字段 范围字段是从开始字段和结束字段计算的,有时使用“忽略”弹出一条记录 该方法工作正常,但从excel工作表范围字段将数据导入模式时,不会计算该字段 这就是全部代码​ class relate(models.Model): _name = 'relate' _rec_name = 'car' @api.multi @api.onchange('start', 'end', 'ignore') def years_rang(self): for

我在视图开始、结束、忽略和范围中添加了四个字段 范围字段是从开始字段和结束字段计算的,有时使用“忽略”弹出一条记录 该方法工作正常,但从excel工作表范围字段将数据导入模式时,不会计算该字段 这就是全部代码​

class relate(models.Model):
_name = 'relate'
_rec_name = 'car'

@api.multi
@api.onchange('start', 'end', 'ignore')
def years_rang(self):
    for rec in self:
        if rec.start and rec.end:
            record = [int(x) for x in range(int(rec.start), int(rec.end) + 1)]
            list = []
            if rec.ignore:
                try:
                    record.remove(int(self.ignore))
                    list = []
                except ValueError:
                    return {'warning': {'title': 'Warning!', 'message': "the Ignored year doesn't in range"}}
            for item in record:
                range_id = self.env['yearrange'].create({'name': str(item)})
                list.append(range_id.id)
            rec.rang = [(4, x, None) for x in list]
        pass
start = fields.Char(string="", required=False, )
end = fields.Char(string="", required=False, )
rang = fields.One2many(comodel_name="yearrange", inverse_name="product_id",store=True, string="Years" ,)
ignore = fields.Char(string="Ignore", required=False, ) 


class yearrange(models.Model):
    _name = 'yearrange'
    _rec_name = 'name'
name = fields.Char()
product_id = fields.Many2one(comodel_name="relate")

您的字段
范围
未计算,因为您从未告诉过它。只需在字段定义中添加
compute
参数:

rang=fields.One2many(
comodel_name=“yearrange”,inverse_name=“product\u id”,
compute=“years\u rang”,store=True,string=“years”,)
您应该使用
api.dependens
而不是
api.onchange

@api.multi
@依赖于('start','end','ignore')
def年数(自我):
# ...

在客户端,您将看到,
api.dependens
将具有与
api.onchange

相同的结果,非常感谢您的关注,但是,当我向字段中添加一个计算并依赖它时,我会得到错误RecursionError:调用Python对象时超出了最大递归深度,这是该方法本身的问题。解决方案是什么it@MohamedFouad你应该接受这个答案,你的错误真的很严重我不明白你为什么会有这个错误?