如何在一个列表视图中创建不同的记录,直接指向odoo 10

时间:2018-03-15 08:08:55

标签: python odoo

我正在为以下情况寻找更好的解决方案:

对象A1,A2,A3 ...... An,它们具有相同的属性:a01,a02,a03,... a0n。
它们也有不同的属性:
    A1有a10,a11,a12,...,a1n,
    A2具有a20,a21,a22,...... a2n,
    A3有a30,a31,a32,...... a3n,
    an有an0,an1,an2,.... ann,

这是预期的结果:
一个列表视图显示所有对象(A1,A2,A3,... An)的属性a01,a02,a03,... a0n的值。 单击列表视图中的记录时,将打开并显示该对象的表单。

例如:

我们有3条记录:
    来自对象A1的记录1     来自对象A2的记录2     从对象A3记录3。

所以在列表视图中属性的值:

    a01,a02,a03,... a0n

显示所有三个记录。

单击记录1时,将打开对象A1的形式,并显示属性a10,a11,a12,...,a1n的值;

单击记录2时,将打开对象A2的表格,并显示属性a20,a21,a22,...,a2n的值。

换句话说,一个列表视图将指向不同的表单视图。

我目前的解决方案是将所有属性合并到一个模块或类中,所有数据都在一个表中。

当在列表视图中单击不同的记录时,会显示相同的表单,大多数属性都是隐藏的,看起来显示的是不同的视图。

单击记录A1时,显示a10,a11,a12,... a1n,并隐藏a20,a21,a22,.... a2n,an1,an2,.... ann。 />

此解决方案的问题是一个模块中的属性数量越来越大,需要隐藏越来越多的属性。
你有什么想要更好地做到这一点吗?

1 个答案:

答案 0 :(得分:1)

你知道树视图只需要一个模型。

不是在合并模型中添加所有字段,而是在原始模型中添加公共字段和模型名称以及recod的id。 (model_name, record_id)显示一个树视图,其中包含一个按钮"显示记录"该按钮调用一个方法来打开单击的记录,但是在模型返回的动作字典中

      return {
             'type': 'ir.actions.act_window',
              .......
              ........
             'view_ode': 'form',  # show the record in form view

            'res_model' : self.model_name,
            'res_id' : self.record_id,
        }

这样,您始终可以显示原始模型的原始表单视图。并且您只需要一个树视图用于合并模型。

不要显示您需要强制用户点击树状视图中按钮的合并模型的表单视图

          <field name="view_mode">tree</field>

我用手机抱歉我的英文