如何只读一个具有attrs和这些条件的字段?

时间:2018-03-14 13:05:57

标签: xml odoo odoo-10

<field name="Tr"   attrs="{'readonly':['|',('week_end','=',False),('HSup_P1','!=',False),('HSup_P2','!=',False),('HSup_P3','!=',False),('HSup_P4','!=',False)]}"/>

我想要做的是在week_end False HSup_P1HSup_P2,{HSup_P3时,将此字段设为 readonly {1}}或HSup_P4 True

1 个答案:

答案 0 :(得分:3)

这应该有效:

<field name="Tr" attrs="{'readonly': ['|', '|', ('week_end', '=', False), ('HSup_P1', '!=', False), '|', '|', ('HSup_P2', '!=', False), ('HSup_P3', '!=', False), ('HSup_P4', '!=', False)]}"/>

在这篇文章中查看我的回答:I don´t understand Normal Polish Notation (NPN or PN). How to build a complex domain in Odoo?

我认为,当您必须处理域名和此波兰表示法时,它将在未来帮助您。

因此,如果你应用我在链接中建议的方法:

A => ('week_end', '=', False)
B => ('HSup_P1', '!=', False)
C => ('HSup_P2', '!=', False)
D => ('HSup_P3', '!=', False)
E => ('HSup_P4', '!=', False)

你想要什么:

Step 0. => A or B or C or D or E

在这里,您可以根据需要对字母进行分组,因为没有任何优先级,例如:

Step 1. => A or B or C or D or E
Step 2. => AB or C or D or E
Step 3. => AB or CD or E
Step 4. => AB or CDE

现在,我们分解制作的组,将其操作符移到左侧:

Step 4. => or AB CDE
Step 3. => or AB or CD E
Step 2. => or AB or or C D E
Step 1. => or or A B or or C D E

最后,用各自的表达式和运算符替换字母(or |and &amp;),你会得到答案我上面写了你。