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

标签 python python-3.x orm odoo python-import

我在 View 开始、结束、忽略和范围中添加了四个字段 范围字段是根据开始和结束字段计算的,有时使用忽略来弹出记录 该方法运行良好,但将数据从 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")

最佳答案

您的字段rang未计算,因为您从未告诉过它。只需在字段定义上添加 compute 参数即可:

rang = fields.One2many(
    comodel_name="yearrange", inverse_name="product_id",
    compute="years_rang", store=True, string="Years" ,)

并且您应该在计算方法上使用 api.depends 而不是 api.onchange:

@api.multi
@api.depends('start', 'end', 'ignore')
def years_rang(self):
    # ...

在客户端,您将看到 api.depends 将具有与 api.onchange 相同的结果。

关于python - 如何使 odoo 计算关系字段在导入时自行计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57348615/

相关文章:

python - ValueError : Invalid\escape: error while doing json. 加载()

python - 如何检查 Pandas 数据框中的卡住数据

python - 将前导零添加到日期和时间字符串中的小时数

python - 无法在命令提示符下两次捕获KeyboardInterrupt?

python - __init__.py 和 __main__.py 有什么区别?

python - 在保持值(value)的同时在循环内进行比较

mysql - 使用 Sequelize.js 加入特定列

Python 游戏没有去我想要的地方

.NET Dapper 可空转换错误

python - 使用 SQLAlchemy ORM 高效更新数据库