如何在Odoo中通过id获取以前的数据或最新数据?

sto*_*x26 3 openerp odoo-8 odoo-9

我创建了一个计费系统,我有一个领域meter_no,prev_reading,current_readingconsumed.在我的onchange方法中,当我选择一个仪表编号时,我prev_reading将自动填充最后current_reading由a的id 保存的值meter_no.这是我的onchange方法:

@api.multi
@api.onchange('meter_no')
def onchange_meter_no(self):
    ids = self.search([('meter_no','=',self.meter_no.id)])
    last_id = ids and max(ids)
    if self.meter_no:
        self.prev_reading = last_id.current_reading or None
Run Code Online (Sandbox Code Playgroud)

但这总是返回第二个值,而不是最后一个数据.例如,BILL-01 prev_reading = 0.0,current_reading = 10.0consumed = 10.0.在BILL-02,符合市场预期,其中,该数据是正确的prev_reading = 10.0,然后我进入current_reading = 20,然后consumed = 10.在第三次计费中,BILL-03 prev_reading始终是10,直到第四次才一直相同,依此类推.这有什么问题?我已经用它max()来获取最后一个id.

小智 7

您可以将选项传递给搜索函数以获取最后一个ID,如下所示:

record_ids = self.search([('meter_no','=',self.meter_no.id)], order='id desc', limit=1)
last_id = record_ids.id
Run Code Online (Sandbox Code Playgroud)

...