Openerp 如何有条件地编写odoo域?

Openerp 如何有条件地编写odoo域?,openerp,odoo-8,odoo-view,Openerp,Odoo 8,Odoo View,如果a字段不为False,我想应用一个odoo域 ['|',('versions_ids', '=', version_id),(False, '=', version_id)] 像我写的域抛出此错误 TypeError:不可损坏的类型:“列表” 编辑: 对象扩展为: class sale_order_line(models.Model): _inherit = 'sale.order.line' version_id = fields.Many2one('product_c

如果a字段不为False,我想应用一个odoo域

['|',('versions_ids', '=', version_id),(False, '=', version_id)]
像我写的域抛出此错误

TypeError:不可损坏的类型:“列表”

编辑:

对象扩展为:

class sale_order_line(models.Model):
    _inherit = 'sale.order.line'

    version_id = fields.Many2one('product_cars_application.version',string='Version')
视野开阔

<record id="sale_cars_append" model="ir.ui.view">
            <field name="name">sale.order.form</field>
            <field name="model">sale.order</field>
            <field name="inherit_id" ref="sale.view_order_form"/>
            <field name="arch" type="xml">
                <xpath expr="." position="inside">
                    <script type='text/javascript' src='/product_cars_application/static/src/js/filter.js'></script>
                </xpath>

                <xpath expr="/form/sheet/notebook/page[1]/field[@name='order_line']/tree/field[@name='product_id']" position="before">
                    <!-- <button name="product_search" type="action" class="oe_highlight" icon="fa-car" /> -->
                    <field name="version_id"/>
                </xpath>
                <xpath expr="/form/sheet/notebook/page[1]/field[@name='order_line']/tree/field[@name='product_id']" position="attributes">
                    <attribute name = "domain">['|',('versions_ids', '=', version_id),(False, '=', version_id)]</attribute>
                </xpath>
            </field>
        </record>

销售单
销售订单
['|',('versions_id','=',version_id),(False,'=',version_id)]
尝试以下操作

<xpath expr="/form/sheet/notebook/page[1]/field[@name='order_line']/tree/field[@name='product_id']" position="attributes">
    <attribute name = "domain">['|',('version_ids', '=', version_id),('version_ids','=',False),'|',('version_id','=',False)]</attribute>
</xpath>

['|',('version_id','=',version_id',('version_id','=',False),'|',('version_id','=',False)]
尝试以下操作

<xpath expr="/form/sheet/notebook/page[1]/field[@name='order_line']/tree/field[@name='product_id']" position="attributes">
    <attribute name = "domain">['|',('version_ids', '=', version_id),('version_ids','=',False),'|',('version_id','=',False)]</attribute>
</xpath>

['|',('version_id','=',version_id',('version_id','=',False),'|',('version_id','=',False)]

应该是这样的

<xpath expr="/form/sheet/notebook/page[1]/field[@name='order_line']/tree/field[@name='product_id']" position="attributes">
    <attribute name = "domain">['|',('version_ids', '=', version_id),('version_ids','=',False)]</attribute>
</xpath>

应该是这样,

<xpath expr="/form/sheet/notebook/page[1]/field[@name='order_line']/tree/field[@name='product_id']" position="attributes">
    <attribute name = "domain">['|',('version_ids', '=', version_id),('version_ids','=',False)]</attribute>
</xpath>


如果您不介意提供更多的上下文。显示定义域的代码(不仅仅是域)。显示调用函数的字段定义。@Phillip Stack edit adding contextI我见过类似的情况。version\u id是列表,version\u id是int或False。列表int比较可能是一个问题。将
version\u id
包装在一个列表中('versions\u id','=',[version\u id]),也在
中使用
,而不是
=
域的第一部分工作正常。('versions_id','=',version_id)。但是如果我只在version\u id为False时使用它,那么它只会显示versions\u id=False的产品,如果您不介意提供更多上下文,我想显示所有这些。显示定义域的代码(不仅仅是域)。显示调用函数的字段定义。@Phillip Stack edit adding contextI我见过类似的情况。version\u id是列表,version\u id是int或False。列表int比较可能是一个问题。将
version\u id
包装在一个列表中('versions\u id','=',[version\u id]),也在
中使用
,而不是
=
域的第一部分工作正常。('versions_id','=',version_id)。但是如果我只在version\u id为False时使用它,它只显示versions\u id=False的产品,我想显示域的所有第一部分工作正常。('versions_id','=',version_id)。但是如果我只在version\u id为False时使用这个,它只显示versions\u id=False的产品,我想显示allI将修改我的建议。我经常发现这些域是一个非直观的过程。我认为,如果将
操作符放在第一个元组的前面,解析器希望第二个元组是第一个元组中第一个叶的替代值。因此,您可能希望将
|
放在第一个元组之后。域的第一部分工作正常。('versions_id','=',version_id)。但是如果我只在version\u id为False时使用这个,它只显示versions\u id=False的产品,我想显示allI将修改我的建议。我经常发现这些域是一个非直观的过程。我认为,如果将
操作符放在第一个元组的前面,解析器希望第二个元组是第一个元组中第一个叶的替代值。因此,您可能希望将
|
放在第一个元组之后。这将显示sales.order.line.version\u id位于sales.order.line.product\u id.versions\u id中的产品,以及sales.order.line.product\u id.versions\u id=False。。。我需要显示:如果“version\u id”不为False,则显示“sales.order.line.version\u id”在“sales.order.line.product\u id.versions\u id”中,如果version id为False,该怎么办?我需要应用域,前提是version\u id不为False。在python中是这样的。如果版本id:domain=[('version\u id','=',version\u id)]否则:domain=[]如果定义了版本id,则显示版本id=False的产品,我只需要显示那些产品id.versions\u id=version\u id的产品,这些产品将显示sales.order.line.version\u id位于sales.order.line.product\u id.versions\u id中的产品,还有sales.order.line.product\u id.versions\u id=False。。。我需要显示:如果“version\u id”不为False,则显示“sales.order.line.version\u id”在“sales.order.line.product\u id.versions\u id”中,如果version id为False,该怎么办?我需要应用域,前提是version\u id不为False。在python中是这样的。如果版本id:domain=[('version\u id','=',version\u id)]其他:domain=[]如果定义了版本id,则显示产品的版本id=False,我只需要显示产品的版本id.versions\u id=version\u id