python - 如何将方法行减少为循环?
问题描述
我怎么能把我的代码留在一个循环中?它限制了我这样做,因为它们具有不同的定义,所以我无法减少代码行。
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))
解决方案
你好弗朗西斯科·冈萨雷斯·梅亚斯,
以这种方式优化方法,只需使用减少线为您的所有领域调用一种方法。
@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'))
谢谢
推荐阅读
- php - 如何为这个自定义的 rest API 进行分页?
- php - Cakephp 2 Containable 在自定义库中不起作用
- php - 如何删除 WordPress 帖子中的帖子标题和帖子内容?
- python - 我需要读取文本文件并使用 python 将特定值插入 csv 文件
- python - 替换熊猫数据框中的多个字符
- postgresql - Postgres 时间戳之间的时间差(以分钟为单位)
- laravel - 是否可以为 Laravel Vapor 使用 Papertrail 之类的服务?
- c# - 从任务更新 ViewModel 属性,但在 WPF 中确实很慢
- virtual-machine - 如何在强制用户在远程桌面上注销之前发出公告消息?
- java - 如何更改 JMeter 的字体?(现在上 i 与下 L 相同)