[英]how to make odoo computed relation field caculate itself while importing?
我在視圖中添加了四個字段開始,結束,忽略和范圍范圍字段是從開始和結束字段計算的,有時使用忽略來彈出記錄該方法運行良好,但同時將數據從 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
相同的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.