gpt4 book ai didi

xml - Odoo 域错误中的多个条件

转载 作者:行者123 更新时间:2023-12-02 03:50:53 25 4
gpt4 key购买 nike

我正在尝试做条件:A或(B和C)

我的代码:

<field name="x" attrs="{'readonly': ['|',('state','!=', 'ok'), (('state', '=', 'fine'), ('participate_process', '=', False))]}" >

我从 web 得到 js 错误:

Error: unknown field state,=,to_approve_second domain ["|",["state","!=","ok"],[["state","=","fine"],["participate_process","=",false]]]

我也在尝试另一种方式:

<field name="x" attrs="{'readonly': ['|', '&amp;', ('state','!=', 'ok'), ('state', '=', 'fine'), ('participate_process', '=', False)]}" >

但是没用..

这些多域有什么问题?

最佳答案

你好 fueggit,

OpenERP 使用波兰语表示域过滤器。

首先您应该了解什么是波兰表示法。您可以在维基百科中找到有关波兰表示法的详细信息。 http://en.wikipedia.org/wiki/Polish_notation

关于你的问题

( A OR B ) AND ( C OR D OR E )

应该转换为波兰语表示法

AND OR A B OR OR C D E

并且应该通过以下顺序的算法来解决[]表示运算

AND [OR A B] OR OR C D E         Result of [OR A B] is F

AND F OR [OR C D] E Result of [OR C D] is G

AND F [OR G E] Result of [OR G E] is H

[AND F H]

它从LEFTRight

“如果在找到两个操作数之前找到了另一个运算符,那么旧的运算符将被放在一边,直到这个新的运算符被解析。这个过程迭代直到一个运算符被解析,这最终必须发生,因为必须有另一个操作数比完整语句中的运算符还多。”来自维基百科文章。

您还可以使用 in 运算符,而不用像 OR 运算符那样编写三个单独的元组

['&',('field2', 'in', ['A', 'B']),('state', 'in', ['open', 'closed', 'draft'])]

解决方案

    <field name="x" attrs="{'readonly': [('participate_process', '=', False),'|',('state','!=', 'ok'),('state', '=', 'fine')]}" >  

<field name="x" attrs="{'readonly': ['&',('participate_process', '=', False),'|',('state','!=', 'ok'),('state', '=', 'fine')]}" >  

希望我的回答对你有帮助。
如果有任何疑问,请发表评论。

关于xml - Odoo 域错误中的多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45506255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com