【问题标题】:How to set dynamic value in tree parameter?如何在树参数中设置动态值?
【发布时间】:2019-01-08 08:55:07
【问题描述】:

我们知道,在表单视图的树形视图中有一个“添加项目”按钮,单击“添加项目”按钮可以创建 one2many 的新行。

众所周知,许多模型中都有一个“状态”字段。


因此,我尝试解决以下两个要求:

1) 当状态不是“完成”时,我可以看到“添加项目”并编辑其他行。

2) 当状态为“完成”时,“添加项目”消失并编辑其他行。


我尝试了很多,但都失败了。

如:

1)

<tree create="0" edit="1">

它不是动态的,所以它不符合任何要求。

2)

<tree create="[('state','!=','done')]" edit="1">

不生效,报错。

错误信息: “未知的 CORS 错误” “发生未知的 CORS 错误。该错误可能源自 从不同来源提供的 JavaScript 文件。 (打开浏览器 控制台可能会给您有关错误的提示。) "

3)

<tree create="state!='done'" edit="1">

错误同上。

4)

<tree attrs="{'create':[('state','!=','done')]}" edit="1">

没有影响或错误。

【问题讨论】:

  • 树形视图由许多记录组成,所以如果一个记录处于完成状态,添加项目按钮应该会消失吗?
  • @Navi 非常非常感谢!我犯了一个低级错误!我替换了另一个模块中的 attrs。
  • ok @star 一切顺利

标签: xml odoo odoo-10


【解决方案1】:

您的想法几乎是正确的,但是您将这些属性放在错误的标签中。您正在尝试将一个字段设为只读,在这种情况下,该字段位于 form 视图内的 tree 表单中。所以你所要做的就是在field 标签中设置只读条件,One2many 为其添加了树表示。所以代码会是这样的:

<field name="one2many_field_name" attrs="{'readonly': [('state', '=', 'done')]}">
    <tree editable="bottom">
    .....
    .....
    </tree>
</field>

另外需要注意的是,您可以在Model 定义中将只读条件设置为field 定义本身,在这种情况下,您不必在使用该字段的每个视图中定义只读条件。

【讨论】:

  • 非常感谢!当“parent.state”为“done”时,我还想编辑一些行。它通过添加“父级”来解决。在“属性”中的“状态”之前。昨天我太傻了,犯了低级错误!
【解决方案2】:
<field>
    <tree attrs="{'create':[('parent.state','!=','done')]}">

    </tree>
</field>

我犯了低级错误!

我替换了另一个模块中的attrs,“状态”应该是“parent.state”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-03
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 2023-03-22
    • 2012-02-23
    • 2021-07-11
    • 1970-01-01
    相关资源
    最近更新 更多