odoo中的域前缀表达式

Domain prefix expression in odoo

我正在尝试修改域,但我必须首先了解此前缀表达式的逻辑:

 <field name="partner_id" position="attributes">
                <attribute name="domain">[('state', '=', 'validate'),
                                            '|', '|',
                                                '&amp;',
                                                    ('supplier', '=', to_supplier), ('customer', '=', to_customer),
                                                '&amp;',
                                                    ('supplier', '=', True), ('customer', '=', True),
                                                ('is_project', '=', True)]
                </attribute>

我试图将它转换成中缀表达式(为了我自己的理解)所以我得到了这个:

('state', '=', 'validate'),[[('supplier', '=', to_supplier),'&amp;' ('customer', '=', to_customer)],'|',[('supplier', '=', True),'&amp;', ('customer', '=', True)], '|',
                                                ('is_project', '=', True)]

以更简单的方式: 前缀:A,|,|,&,B,C,&,D,E,F 中缀 : A,(B&C | D&E| F)

不知道对不对

是的,这是正确的:

[ A,
    '|', 
        '|',
            '&', B, C,
            '&', D, E,
        F]

相同
[
    '&'
    A,
    [
        '|', 
        [
            '|', 
            ['&', B, C,], 
            ['&', D, E,]
        ],
        F
    ]
]

中缀是这样的:

[
    A,
    '&',
    [
        [
            [B, '&', C,], 
            '|', 
            [D, '&',E,]
        ]
        '|', 
        F
    ]
]

可以“简化”为:

A, '&', [B, '&', C, '|', D, '&', E, '|', F]

另外:在Odoo中,如果你不写任何运算符,有一个隐含的'&'