2017-11-15 4 views
3

私はこの方法があります:ループ - OdooのV8

@api.onchange('qty', 'consumed_qty') 
def _remaining_func(self): 
    for qty in self.isbn: 
     if self.qty or self.consumed_qty: 
      self.remaining_qty = self.qty +(-self.consumed_qty) 

をしかし、私はただ一つのレコードを追加する場合、それは動作しますが、今、私のライン(One2manyフィールド)のレコードをループにそれを必要としますうまくいっていますが、2つ以上追加すると、エラーExpected singletonがスローされます。

どうすればこの方法でループできますか?

私はfor qty in self.isbnを追加しましたが、成功しませんでした。

これは、このメソッドが宣言されたクラスです。

class bsi_production_order_lines(models.Model): 
    _name = 'bsi.production.order.lines' 

    production_order = fields.Many2one('bsi.production.order', string="Production Orders") 
    isbn = fields.Many2one('product.product', string="ISBN", domain="[('is_isbn', '=', True)]") 
    qty = fields.Float(string="Quantity") 
    consumed_qty = fields.Float(string="Consumed quantity") 
    remaining_qty = fields.Float(string="Remaining quantity", compute="_remaining_func") 

任意のアイデア?

答えて

2

あなたは試みることができる:

@api.onchange('qty', 'consumed_qty') 
def _remaining_func(self): 
    for s in self: 
     for qty in s.isbn: 
      if s.qty or s.consumed_qty: 
       s.remaining_qty = s.qty +(-s.consumed_qty) 

私は、これはあなたを助ける願っています。

+1

LoL、ありがとうございます – NeoVe

関連する問題