2016-11-02 12 views
1

フィールドがmeter_no,prev_reading,current_readingconsumedの課金システムを作成しました。 私の交換方法でメーター番号を選択すると、私の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()を使用しました。

+0

...

record_ids = self.search([('meter_no','=',self.meter_no.id)], order='id desc', limit=1) last_id = record_ids.id 

を**は、IDのリスト(の戻り値ではありません検索方法はレコードセットです)。 max関数を指定しても、max関数は最大IDを取得しません。私はそのように思う。 – afwanwh

+0

ありがとうございます@afwanwh。だから、ここであなたの可能な解決策は何ですか? – stonix26

+0

レコードセットで 'max()'を使用できませんか? – stonix26

答えて

1

あなたはこのような最後のIDを取得する機能を検索するためのオプションを渡すことができます。変数** IDS

+0

ありがとう@ thangtn、それは動作します。私は答えとしてマークすることはできません。なぜなら、評判が15未満しかないからです。 – stonix26

関連する問題