当前记录和先前记录之间的区别odoo 11

difference between curent record and previous record odoo 11

在 odoo 10 中,我想计算当前记录中的字段与先前记录中的相同字段之间的差异 calcul difference between 2 record

所以我使用这个代码

km_parcouru = fields.Float('KM Parcouru', compute='get_km_parcouru', store=True)

@api.multi
@api.depends('odometer')
def get_km_parcouru(self):
    for record in self.sorted(lambda x:x.id):
        prev = self.env['fleet.vehicle.log.fuel'].search([], order='date desc', limit=1)
        prev_record = prev[0]['odometer'] if prev else 0
        record.km_parcouru = record.odometer - prev_record

你能帮我吗?

谢谢

您可以添加域[('id', '<', record.id)]和订单id desc来注册之前的记录,如下所示:

@api.multi
@api.depends('odometer')
def get_km_parcouru(self):
    for record in self:
        prev = self.env['fleet.vehicle.log.fuel'].search([('id', '<', record.id)], order='id desc', limit=1)
        prev_record = prev[0]['odometer'] if prev else 0
        record.km_parcouru = record.odometer - prev_record

希望这个回答能对您有所帮助。

2018 年 6 月 15 日更新

NewId错误,是因为在你保存记录之前,record.id不存在,你应该覆盖createwrite方法,在这个方法被调用后record.id 应该存在。如果您的计算字段没有存储在您的 table 中,可能是因为您在使用计算属性后添加了 store=true,您可以通过 SQL 删除 table 中的一列,然后重新启动您的服务器。