【问题标题】:Attriburtes don't work in odoo with OR operator属性不适用于 odoo 与 OR 运算符
【发布时间】:2021-08-17 17:50:19
【问题描述】:

我正在使用属性在某些条件下使字段只读,但它似乎不起作用。我用 AND 运算符链接了两个域表达式,并用 OR 运算符将另一个域表达式链接到这两个,但它不会使字段只读。

<field name="medic_data" options="{'no_quick_create':True,'no_create_edit':True}"
                         domain="[('state','=','accepted')]"
                         attrs="{'readonly':[('speciality','=',False),('search_by','=','especialidad'),'|',('state','=','accepted')],}"/>

我与('speciality','=',False), 'search_by','=','especialidad') 合作,但不与('state','=','accepted') 合作

【问题讨论】:

  • 如果您还没有查看它,这里有一个 link 到当前的 Odoo 文档以搜索域。

标签: python xml database odoo


【解决方案1】:

您的域中的错误是您添加了一个 OR,之后只有一次搜索。

一个运算符必须一直用 2 搜索。 示例:['&amp;',('speciality','=',False),('search_by','=','especialidad)]

在 python 代码中,您的域可以这样写:

if speciality == False and search_by == 'especialidad' and or state == 'accepted':

您有两个操作员互相跟随。我想,这很简单的假设。你试着写这个。

[('speciality','=',False),'|',('search_by','=','especialidad'),('state','=','accepted')]

如果您拆分并添加显式运算符以获得更多说明,则域是这样的

[
    '&',
        ('speciality','=',False),
        '|',
            ('search_by','=','especialidad'),
            ('state','=','accepted')
]

在python中,域可以这样写。

if speciality == False and (search_by = 'especialidad' or state = 'accepted')

【讨论】:

  • 对我来说尚不清楚他的条件究竟如何,但你的回答有足够的优点来获得支持 ;-)
  • 如果您需要有关域符号逻辑的更多信息。看这个fr.wikipedia.org/wiki/…
【解决方案2】:

在您的代码中尝试两次 or 运算符,如下所示:

<field name="medic_data" options=" 
   {'no_quick_create':True,'no_create_edit':True}"
                         domain="[('state','=','accepted')]"
                         attrs="{'readonly':[('speciality','=',False), 
  ('search_by','=','especialidad'),'|', '|', 
  ('state','=','accepted')],}"/>    

【讨论】:

    猜你喜欢
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-04
    • 2011-08-08
    • 2012-05-28
    相关资源
    最近更新 更多