【问题标题】:Workaround for Many2One or One2Many relationships from non-transient Model to TransientModel in Odoo在 Odoo 中从非瞬态模型到瞬态模型的 Many2One 或 One2Many 关系的解决方法
【发布时间】:2019-06-21 05:53:13
【问题描述】:

我想在 ODOO-10 中创建非瞬态模型和瞬态模型之间的关系。我们已经创建了一个瞬态模型来进行一些复杂的计算,现在我们想在非瞬态模型表单上显示这些数据,但由于瞬态和非瞬态模型关系的限制而无法实现

【问题讨论】:

  • 你想用瞬态模型/向导做什么?你想创建一个新的非瞬态模型记录/编辑一个现有的非瞬态模型记录。
  • 我做了一个临时模型,它根据业务逻辑存储一些临时数据,然后我们想在销售订单表单上显示该数据表。

标签: python odoo odoo-10 erp


【解决方案1】:

普通模型和瞬态 One 之间唯一允许的关系是:

          T   ---- M2o   ----- > M
          M ------ M2M   ------> T

因此,如果您想要 One2many 之类的行为,请使用 Computed Many2many 并使用简单的搜索调用填充它。

【讨论】:

    【解决方案2】:

    在您的非瞬态模型中定义一个用于打开向导的按钮。

    在非瞬态模型中

    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',
    
                }
    

    在瞬态模型中

    如果您想更改向导中的数据并反映在您的非瞬态模型中,请调用 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-13
      • 1970-01-01
      • 1970-01-01
      • 2018-08-10
      • 2022-10-20
      • 1970-01-01
      相关资源
      最近更新 更多