我想跟踪此方法,以知道为什么它在第二个记录后停止循环



我想制作一个按钮以在所有记录中循环循环,并执行一种从tow fields和pop中从列表中弹出另一个记录的方法,但是结果字段中的值

我在下面的代码中像在第一个记录和第二个记录中一样运行良好然后它停止工作

class relate(models.Model):
_name = 'relate'
_rec_name = 'car'
@api.multi
@api.onchange('start', 'end', 'ignore')
def years_rang(self):
    for rec in self.search([]):
        if not rec.rang:
            record = [int(x) for x in range(int(rec.start), int(rec.end) + 1)]
            list = []
            if rec.ignore:
                try:
                    record.remove(int(self.ignore))
                    list= []
                    print(record)
                except ValueError:
                    return {'warning': {'title': 'Warning!', 'message': "the Ignored year doesn't in range"}}
                else:
                    for item in record:
                        range_id = self.env['yearrange'].create({'name': str(item)})
                        list.append(range_id.id)
                    rec.rang = [(4, x, None) for x in list]
        else:
            return
start = fields.Char(string="", required=False, )
end = fields.Char(string="", required=False, )
rang = fields.One2many(comodel_name="yearrange", inverse_name="product_id", store=True, string="Years" ,)
ignore = fields.Char(string="Ignore", required=False, )
class yearrange(models.Model):
_name = 'yearrange'
_rec_name = 'name'
name = fields.Char()
product_id = fields.Many2one(comodel_name="relate")

任何类型的帮助都将不胜感激

  • 在关键零件中添加print()有助于追踪很多。
  • 如果需要更多,import pdb; pdb.set_trace()将使您进入调试器补充,前提
  • 缺乏对该代码正在做什么的解释以及它使用的数据类型,可以防止未经参与的观察者检测其中的任何与数据相关的错误。self.search([])甚至返回什么?
  • 诸如list之类的遮蔽内置标识符是一个坏主意,与具有list这样的非描述性名称一样糟糕。

最新更新