字段未使用 Fields_view_get 从树视图中隐藏
Field not hiding from tree view using Fields_view_get
我写了一个代码来根据输入更新我的树视图。它基本上使用 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="{"required": true}"/>
<!-- ############################################################ -->
<field name="product_code" modifiers="{"readonly": true}"/>
<!-- ############################################################ -->
<field name="state" invisible="True" modifiers="{"tree_invisible": true}"/>
<field name="size_furn" invisible="0" modifiers="{"tree_invisible": 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="{"required": true}"/>
<!-- ############################################################ -->
<field name="product_code" modifiers="{"readonly": true}"/>
<!-- ############################################################ -->
<field name="state" invisible="True" modifiers="{"tree_invisible": true}"/>
<field name="size_furn" invisible="1" modifiers="{"tree_invisible": false}"/>
</tree>
我们可以看到 xml 正在更新,但问题是更改在 openerp 应用程序上不可见。我无论如何都可以查看这个字段。我也尝试使用 True
和 False
。但它没有用。任何解决此问题的方法。
谢谢
试试这个
<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。
我写了一个代码来根据输入更新我的树视图。它基本上使用 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="{"required": true}"/>
<!-- ############################################################ -->
<field name="product_code" modifiers="{"readonly": true}"/>
<!-- ############################################################ -->
<field name="state" invisible="True" modifiers="{"tree_invisible": true}"/>
<field name="size_furn" invisible="0" modifiers="{"tree_invisible": 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="{"required": true}"/>
<!-- ############################################################ -->
<field name="product_code" modifiers="{"readonly": true}"/>
<!-- ############################################################ -->
<field name="state" invisible="True" modifiers="{"tree_invisible": true}"/>
<field name="size_furn" invisible="1" modifiers="{"tree_invisible": false}"/>
</tree>
我们可以看到 xml 正在更新,但问题是更改在 openerp 应用程序上不可见。我无论如何都可以查看这个字段。我也尝试使用 True
和 False
。但它没有用。任何解决此问题的方法。
谢谢
试试这个
<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。