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

时间:2018-07-13 00:17:20

标签: odoo odoo-10

在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

你能帮我吗?

谢谢

1 个答案:

答案 0 :(得分:0)

您可以添加域[('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

我希望这个答案对您有帮助。

更新15/06/2018

NewId错误,这是因为在保存记录之前,record.id不存在,您应该重写createwrite方法,然后调用该方法record.id 。而且,如果您的计算字段没有存储在表中,也许是因为使用计算attritube之后添加了store=true,则可以通过SQL删除表中的一列,然后重新启动服务器。