Odoo 中从非瞬态模型到瞬态模型的 Many2One 或 One2Many 关系的解决方法
Workaround for Many2One or One2Many relationships from non-transient Model to TransientModel in Odoo
我想在 ODOO-10 中创建非瞬态模型和瞬态模型之间的关系。我们已经创建了一个执行一些复杂计算的瞬态模型,现在我们想在非瞬态模型表单上显示此数据,但由于瞬态和非瞬态模型关系限制而无法实现
普通模型和瞬态模型之间唯一允许的关系是:
T ---- M2o ----- > M
M ------ M2M ------> T
因此,如果您想要像 One2many 这样的行为,请使用 Computed Many2many 并填充它 一个简单的搜索调用。
在您的非瞬态模型中定义一个用于打开向导的按钮。
在非瞬态模型中
def open_wiz(self):
wiz=self.env['your_wizard_name'].create(
{
'xn_id':self.id, #your_non transient_model's id #not compulosory
'field1':feild1_data,
'field2':field2_data
}
return {
'name':'Display',
'view_type':'form',
'view_mode':'form',
'res_model':'your_wizard_model_name',
'type':'ir.actions.act_window',
'res_id':wiz.id,
'target':'new',
}
在 Tansient 模型中
如果您想更改向导中的数据并反映在您的非瞬态模型中,请调用 Super of Write 函数并传递数据。
例如:
@api.multi
def write(self,vals):
res=super(wiz_class_name,self).write(vals)
self.xn_id.write({'field1':self.data_from_wiz})
return res
我想在 ODOO-10 中创建非瞬态模型和瞬态模型之间的关系。我们已经创建了一个执行一些复杂计算的瞬态模型,现在我们想在非瞬态模型表单上显示此数据,但由于瞬态和非瞬态模型关系限制而无法实现
普通模型和瞬态模型之间唯一允许的关系是:
T ---- M2o ----- > M
M ------ M2M ------> T
因此,如果您想要像 One2many 这样的行为,请使用 Computed Many2many 并填充它 一个简单的搜索调用。
在您的非瞬态模型中定义一个用于打开向导的按钮。
在非瞬态模型中
def open_wiz(self):
wiz=self.env['your_wizard_name'].create(
{
'xn_id':self.id, #your_non transient_model's id #not compulosory
'field1':feild1_data,
'field2':field2_data
}
return {
'name':'Display',
'view_type':'form',
'view_mode':'form',
'res_model':'your_wizard_model_name',
'type':'ir.actions.act_window',
'res_id':wiz.id,
'target':'new',
}
在 Tansient 模型中
如果您想更改向导中的数据并反映在您的非瞬态模型中,请调用 Super of Write 函数并传递数据。 例如:
@api.multi
def write(self,vals):
res=super(wiz_class_name,self).write(vals)
self.xn_id.write({'field1':self.data_from_wiz})
return res