使用on_change方法,我试图使用(0,0,{list values} )的概念将默认值发送到one2many字段;即使在那里它工作得很好,但在one2many中也有一个one2many字段,我还必须向该字段发送值,以便在代码中实现(0,0,{list values })的相同概念,但没有成功。
你能帮我一下吗?。
附于我的代码片段
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字段是laboratorios_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')谢谢你帮忙!
发布于 2017-07-07 04:07:37
我在这里看到的唯一原因是analitos中缺少的引用。这个'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解决方案: many2one字段'hc_id'在结果模型中缺失。 'hc_id‘:self.id #(这里需要'hc’模型的id )。 analitos = (0,0,{'hc_ id ':id of resullab_object.id})
这可能对你有帮助。
发布于 2017-07-07 08:24:06
抱歉,我的英语。
1- onchange是从服务器上的客户端调用的方法,该方法将向客户端返回一个值(javascript)。
因此,当客户端接收到此数据时,将填充字段,因此在当前视图中,如果字段不在,则将忽略该值。
因此,当您在视图中传递第二个o2m字段的值时,该字段不存在,因为它的形式将通过单击additem或要编辑的项来打开。这就是为什么打开项时,表单中没有显示该值的原因。
在onchange事件中无法做到这一点,因为无法将字段列表传递给第一个o2m的树。我的意思是:
o2m1_id o2m2_id
model.1 -------> model.2 --------> model.3(field1, field2)在model.1视图中,您可以为o2m1_id创建一个特殊的树,并将字段o2m2_id放在那里。但是这是无用的,因为当您打开o2m1_id表单时,您会发现o2m2_id包含记录,但包含空(field1,field2)。这是因为onchange事件返回的field1、field2的值被忽略了,这两个字段不在接收它们的model.1的视图中。
https://stackoverflow.com/questions/44960839
复制相似问题