字段不使用Fields_view_get从树视图中隐藏

时间:2015-01-12 09:21:02

标签: python field openerp-7 invisible

我已根据输入编写了更新我的树视图的代码。它基本上使用context。我的fields_view_get方法是这样的:

def fields_view_get(self,cr,uid,view_id=None,view_type='form',context=None, toolbar=False, submenu=False):
    if context is None:
        context={}
    res=super(product_product,self).fields_view_get(cr,uid,view_id=view_id,view_type=view_type,context=context,toolbar=toolbar,submenu=submenu)
    doc=etree.XML(res['arch'])  
    if context.get('parent',False):
        parent=context.get('parent',False)
        if parent==85: ####Vehicle
        print etree.tostring(doc,pretty_print=True)
            for node in doc.xpath("//field[@name='size_furn']"):
            node.set('invisible','1')
            res['arch']=etree.tostring(doc)
    print "\n\n\n\nxml ",res['arch']
    return res

我在这里更新size_furn

的可见性

我在控制台上打印输出。这是改变前的res['arch']

<tree colors="red:  state in ('draft', 'end', 'obsolete');black: state not in ('draft', 'end', 'obsolete')" string="Asset Products">

                <!--    <field name="default_code"/> -->
                    <field name="name" modifiers="{&quot;required&quot;: true}"/>
                <!-- ############################################################ -->
                    <field name="product_code" modifiers="{&quot;readonly&quot;: true}"/>
                <!-- ############################################################   -->
 <field name="state" invisible="True" modifiers="{&quot;tree_invisible&quot;: true}"/>
<field name="size_furn" invisible="0" modifiers="{&quot;tree_invisible&quot;: false}"/>
                </tree>

这是res['arch']

上的更改
<tree colors="red:  state in ('draft', 'end', 'obsolete');black: state not in ('draft', 'end', 'obsolete')" string="Asset Products">

                <!--    <field name="default_code"/> -->
                    <field name="name" modifiers="{&quot;required&quot;: true}"/>
                <!-- ############################################################ -->
                    <field name="product_code" modifiers="{&quot;readonly&quot;: true}"/>
                <!-- ############################################################   -->
 <field name="state" invisible="True" modifiers="{&quot;tree_invisible&quot;: true}"/>
<field name="size_furn" invisible="1" modifiers="{&quot;tree_invisible&quot;: false}"/>
                </tree>

我们可以看到xml正在更新,但问题是在openerp应用程序上看不到更改。无论如何我都可以查看这个字段。我也尝试使用TrueFalse。但它没有用。任何解决此问题的方法。

由于

1 个答案:

答案 0 :(得分:1)

试试这个

<field name="field_name" invisible="context.get('flag',False)" />

您可以使用绑定到列表视图的操作将上下文传递给列表视图。

<record id="action_account_tree1" model="ir.actions.act_window">
   <field name="name">Analytic Items</field>
   <field name="res_model">account.analytic.line</field>
   <field name="view_type">form</field>
   <field name="view_mode">tree,form</field>
   <field name="context">{'flag':True}</field>
</record>

如果您的目的是根据上下文隐藏列表视图中的字段,则无需覆盖fields_view_get。