当前记录和先前记录之间的区别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不存在,你应该覆盖create
和write
方法,在这个方法被调用后record.id
应该存在。如果您的计算字段没有存储在您的 table 中,可能是因为您在使用计算属性后添加了 store=true
,您可以通过 SQL 删除 table 中的一列,然后重新启动您的服务器。
在 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不存在,你应该覆盖create
和write
方法,在这个方法被调用后record.id
应该存在。如果您的计算字段没有存储在您的 table 中,可能是因为您在使用计算属性后添加了 store=true
,您可以通过 SQL 删除 table 中的一列,然后重新启动您的服务器。