在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
你能帮我吗?
谢谢
答案 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不存在,您应该重写create
和write
方法,然后调用该方法record.id
。而且,如果您的计算字段没有存储在表中,也许是因为使用计算attritube之后添加了store=true
,则可以通过SQL删除表中的一列,然后重新启动服务器。