如何在树形参数中设置动态值?

时间:2019-01-08 08:55:08

标签: xml odoo odoo-10

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

我们知道,许多模型中都有一个字段“状态”。


因此,我尝试解决与以下两个要求匹配的问题:

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">

没有效果或错误。

2 个答案:

答案 0 :(得分:2)

您的想法几乎是正确的,但是您将这些属性置于错误的标记中。您正在尝试使字段为只读,在这种情况下,该字段在tree视图内以form形式出现。因此,您要做的就是在field标记中添加只读条件,该标记中添加了树表示形式的One2many。因此,代码将类似于:

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

还要注意,您可以在field定义中为Model定义本身设置只读条件,在这种情况下,您不必在使用该视图的每个视图中都定义只读条件

答案 1 :(得分:0)

<field>
    <tree attrs="{'create':[('parent.state','!=','done')]}">

    </tree>
</field>

我犯了低级错误!

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