作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 View 开始、结束、忽略和范围中添加了四个字段范围字段是根据开始和结束字段计算的,有时使用忽略来弹出记录该方法运行良好,但将数据从 Excel 工作表导入模式时,不会计算范围字段这是整个代码
class relate(models.Model):
_name = 'relate'
_rec_name = 'car'
@api.multi
@api.onchange('start', 'end', 'ignore')
def years_rang(self):
for rec in self:
if rec.start and rec.end:
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 = []
except ValueError:
return {'warning': {'title': 'Warning!', 'message': "the Ignored year doesn't in range"}}
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]
pass
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")
最佳答案
您的字段rang
未计算,因为您从未告诉过它。只需在字段定义上添加 compute
参数即可:
rang = fields.One2many(
comodel_name="yearrange", inverse_name="product_id",
compute="years_rang", store=True, string="Years" ,)
并且您应该在计算方法上使用 api.depends
而不是 api.onchange
:
@api.multi
@api.depends('start', 'end', 'ignore')
def years_rang(self):
# ...
在客户端,您将看到 api.depends
将具有与 api.onchange
相同的结果。
关于python - 如何使 odoo 计算关系字段在导入时自行计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57348615/
我发现以下帖子非常有帮助: How to pickle yourself? 但是,此解决方案的局限性在于,重新加载类时,它不会以其“运行时”状态返回。即它将重新加载所有变量等以及类在转储时的一般状态.
我是一名优秀的程序员,十分优秀!