首页 > 解决方案 > 如何将方法行减少为循环?

问题描述

我怎么能把我的代码留在一个循环中?它限制了我这样做,因为它们具有不同的定义,所以我无法减少代码行。

  input_quantity= fields.Float(string="input_quantitya", compute="input_quantity")
  @api.one
  @api.depends ("detail_book_ids")
  def _stock_entry (self):
      sum = 0
      for detail_book in self.detail_book_ids:
          sum + = book_detail.quantity_debted
      self.input_quantity = sum

  merge_number= fields.Float(string="merge_number", compute="_stock_merma")    
  @api.one
  @api.depends ("detail_book_ids")
  def _stock_merma (self):
      sum = 0
      for detail_book in self.detail_book_ids:
          sum + = detail_book.quantity_merm
      self.merge_number = sum

  output_quantity= fields.Float(string="output_quantity", compute="_stock_output")
  @api.one
  @api.depends ("detail_book_ids")
  def _stock_output (self):
      sum = 0
      for detail_book in self.detail_book_ids:
          sum + = book_detail.quantity_to have
      self.output_quantity = sum

我需要这样做,因为这就是我收到以下错误的原因: RecursionError:调用 Python 对象时超出了最大递归深度。

计算库存的字段如下

  stock= fields.Float(string="stock", compute="_stock")
  @api.one
  @api.depends('input_quantity','output_quantity','existencia','merge_numbe')
  def _stock(self):
      for rec in self:
          rec.stock = rec.existencia + (rec.input_quantity - (rec.output_quantity + rec.merge_numbe))

照片中的错误是: 错误

标签: pythonodoo-12

解决方案


你好弗朗西斯科·冈萨雷斯·梅亚斯,

以这种方式优化方法,只需使用减少线为您的所有领域调用一种方法。

@api.multi
def _compute_common_funtion(self):
    self.input_quantity = sum(self.mapped('detail_book_ids').mapped('quantity_debted'))
    self.merge_number = sum(self.mapped('detail_book_ids').mapped('quantity_merm'))
    self.output_quantity = sum(self.mapped('detail_book_ids').mapped('quantity_to'))

谢谢


推荐阅读