我们知道,表单视图的树状视图中有一个“添加项目”按钮,单击“添加项目”按钮可以创建一个新的一行。
我们知道,许多模型中都有一个字段“状态”。
因此,我尝试解决与以下两个要求匹配的问题:
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">
没有效果或错误。
答案 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”。