Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何根据Odoo 8中树视图中的多个属性使用XML属性?_Xml_Python 2.7_Openerp_Odoo 8 - Fatal编程技术网

如何根据Odoo 8中树视图中的多个属性使用XML属性?

如何根据Odoo 8中树视图中的多个属性使用XML属性?,xml,python-2.7,openerp,odoo-8,Xml,Python 2.7,Openerp,Odoo 8,我正在使用stock.movemodel。此模型有一个名为拾取类型\u id的多个字段。我知道这不是最好的方法,但我使用attrs=“{'invisible':[('picking_type_id','=',1)]”表达式隐藏传入股票移动中的元素(我非常确定传入类型id不会被修改) 但此表达式仅适用于表单视图,不适用于树视图。如果元素是一个字段,这将是可压缩的,但如果不是(例如按钮),它应该可以工作,不是吗 <field name="picking_type_id" invisible="

我正在使用
stock.move
model。此模型有一个名为
拾取类型\u id
的多个字段。我知道这不是最好的方法,但我使用
attrs=“{'invisible':[('picking_type_id','=',1)]”
表达式隐藏传入股票移动中的元素(我非常确定传入类型id不会被修改)

但此表达式仅适用于表单视图,不适用于树视图。如果元素是一个字段,这将是可压缩的,但如果不是(例如按钮),它应该可以工作,不是吗

<field name="picking_type_id" invisible="0"/>
<button name="open_lots_manager_wizard"
    string="Select lots" type="object"
    icon="terp-accessories-archiver+"
    attrs="{'invisible': [('picking_type_id', '=', 1)]}"
    groups="stock.group_stock_user"/>

谁能解释一下原因吗?我是否必须创建一个指向分拣类型代码(例如)的相关字段才能达到我的目的?

我测试了您的代码并理解了这个问题。最好根据XML ID(stock.picking类型)获取对象,并将其与stock move中的picking类型进行比较

我的解决方案是这样的

测试股票移动.py

# -*- coding: utf-8 -*-
from openerp import models, fields, api, _

class stock_move(models.Model):
    _inherit = "stock.move"

    @api.multi
    @api.depends("picking_type_id")
    def _compute_incoming_type(self):
        for o in self:
            o.is_picking_type_incoming = (o.picking_type_id.id == self.env.ref("stock.picking_type_in").id)

    is_picking_type_incoming = fields.Boolean(_("Is picking type incoming"),compute=_compute_incoming_type)
stock\u move\u view.xml

<record id="stock_move_tree" model="ir.ui.view">
    <field name="name" >stock.move.form</field>
    <field name="model">stock.move</field>
    <field name="inherit_id" ref="stock.view_move_tree" />
    <field name="arch" type="xml">
        <xpath expr="//field[@name='state']" position="after">
              <field name="is_picking_type_incoming"/>
              <button name="open_lots_manager_wizard"
                  string="Select lots" type="object"
                  icon="terp-accessories-archiver+"
                  attrs="{'invisible': [('is_picking_type_incoming', '=', True)]}"
                  groups="stock.group_stock_user"/>
         </xpath>
    </field>
</record>

stock.move.form
股票价格上涨
我在
stock.move
模型中添加了一个新的计算字段
is\u picking\u type\u incoming
。这对我来说很有效。希望它能解决你的问题

<record id="stock_move_tree" model="ir.ui.view">
    <field name="name" >stock.move.form</field>
    <field name="model">stock.move</field>
    <field name="inherit_id" ref="stock.view_move_tree" />
    <field name="arch" type="xml">
        <xpath expr="//field[@name='state']" position="after">
              <field name="is_picking_type_incoming"/>
              <button name="open_lots_manager_wizard"
                  string="Select lots" type="object"
                  icon="terp-accessories-archiver+"
                  attrs="{'invisible': [('is_picking_type_incoming', '=', True)]}"
                  groups="stock.group_stock_user"/>
         </xpath>
    </field>
</record>