使用 on_change 方法,我尝试使用 (0,0, {list value} 的概念将默认值发送到 one2many 字段;即使在那里它也工作正常,但在 one2many 内部还有一个 one2many 字段,我将还必须发送值来实现在我的代码中相同的概念(0,0,{列表值},但我没有获得成功。
你能帮我吗?
附上我的代码片段
class hc(models.Model):
_name = 'hc'
laboratorios_ids = fields.One2many(
string='Laboratorios', comodel_name='resullab',
inverse_name='hc_id')
def cargar_pool_labs(self):
labs = []
pool = self.env['mymodel'].sudo().search([])
for laboratorio in pool:
analitos = [(0, 0, {'analito': line.analito,
'resultado': line.resultado ,
'resultado2': line.resultado2 ,
'unidades': line.unidades })
for line in laboratorio.analitos_ids]
labs.append((0,0,{
'nombre_examen' : laboratorio.nombre_examen,
'cups' : laboratorio.cups,
'laboratorio_id': laboratorio.laboratorio_id,
'analitos_ids' : analitos
}))
self.laboratorios_ids = labs
注意:analitos_ids 字段是 labatorios_ids 字段内的 one2many 字段,该字段也是 one2many。
其他型号结构
class resullab(models.Model):
_name = 'resullab'
analitos_ids = fields.One2many('analito','laboratorio_id',
'Analitos Lab', ondelete='cascade')
class labs_analito(models.Model):
_name = 'analito'
laboratorio_id = fields.Many2one('laboratorios', 'Lab Parent')
感谢您的帮助!
最佳答案
我在这里看到的唯一原因是analitos中缺少many2one引用。这个'analitos_ids':analitos指的是必须指定记录id的many2one模型。
def cargar_pool_labs(self):
labs = []
pool = self.env['mymodel'].sudo().search([])
for laboratorio in pool:
analitos = [(0, 0, {'analito': line.analito, 'resultado': line.resultado , 'resultado2': line.resultado2 , 'unidades': line.unidades, }) for line in laboratorio.analitos_ids]
labs.append((0,0,{'nombre_examen' : laboratorio.nombre_examen,
'cups' : laboratorio.cups, 'laboratorio_id': laboratorio.laboratorio_id.id, 'analitos_ids' : analitos}))
self.laboratorios_ids = labs
还有一件事,many2one 引用必须是 id 而不是对象。在您的代码中,它是一个对象而不是 ID。
'laboratorio_id': laboratorio.laboratorio_id.id
Solution:
The many2one field 'hc_id' in resullab model is missing.
'hc_id' : self.id #(here the id of 'hc' model required).
analitos = [(0, 0, {'hc_id': id of resullab_object.id})]
这可能对你有帮助。
关于odoo - 在 onchange 中将 one2many 填充到 one2many 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44960839/