如何使 readonly 成为具有 attrs 和这些条件的字段?
How to make readonly a field with attrs and these conditions?
<field name="Tr" attrs="{'readonly':['|',('week_end','=',False),('HSup_P1','!=',False),('HSup_P2','!=',False),('HSup_P3','!=',False),('HSup_P4','!=',False)]}"/>
我想做的是当 week_end
为 False 或 HSup_P1
时将此字段设置为 readonly , HSup_P2
, HSup_P3
或 HSup_P4
是 True.
这应该有效:
<field name="Tr" attrs="{'readonly': ['|', '|', ('week_end', '=', False), ('HSup_P1', '!=', False), '|', '|', ('HSup_P2', '!=', False), ('HSup_P3', '!=', False), ('HSup_P4', '!=', False)]}"/>
看看我在这个post中的回答:
我认为它会在你以后处理域和波兰语表示法时对你有所帮助。
因此,如果您应用我在 link 中建议您的方法:
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
替换为 &
),您将得到回答我上面写给你了。
<field name="Tr" attrs="{'readonly':['|',('week_end','=',False),('HSup_P1','!=',False),('HSup_P2','!=',False),('HSup_P3','!=',False),('HSup_P4','!=',False)]}"/>
我想做的是当 week_end
为 False 或 HSup_P1
时将此字段设置为 readonly , HSup_P2
, HSup_P3
或 HSup_P4
是 True.
这应该有效:
<field name="Tr" attrs="{'readonly': ['|', '|', ('week_end', '=', False), ('HSup_P1', '!=', False), '|', '|', ('HSup_P2', '!=', False), ('HSup_P3', '!=', False), ('HSup_P4', '!=', False)]}"/>
看看我在这个post中的回答:
我认为它会在你以后处理域和波兰语表示法时对你有所帮助。
因此,如果您应用我在 link 中建议您的方法:
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
替换为 &
),您将得到回答我上面写给你了。