フィールドがmeter_no
,prev_reading
,current_reading
、consumed
の課金システムを作成しました。 私の交換方法でメーター番号を選択すると、私のprev_reading
は最後に保存されたcurrent_reading
の値で、meter_no
のIDで自動的に埋められます。Odooで前のデータか最新のデータをidで取得するには?
@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
これは常に最後のデータではなく、2番目の値を返します。例、BILL-01 prev_reading = 0.0
,current_reading = 10.0
およびconsumed = 10.0
。 BILL-02では、データはprev_reading = 10.0
、次にcurrent_reading = 20
、次にconsumed = 10
と入力されています。ここで3回目の請求では、BILL-03 prev_reading
は常に10
であり、4回目まで常に同じです。これには何が問題なのですか?私はすでに最後のIDを取得するためにmax()
を使用しました。
...
を**は、IDのリスト(の戻り値ではありません検索方法はレコードセットです)。 max関数を指定しても、max関数は最大IDを取得しません。私はそのように思う。 – afwanwh
ありがとうございます@afwanwh。だから、ここであなたの可能な解決策は何ですか? – stonix26
レコードセットで 'max()'を使用できませんか? – stonix26