我有一个领域是M2o,而另一个领域是O2m。我试图像这样显示M2o类中的O2m字段,并在树视图中显示所有O2m字段。但是我需要隐藏基于ir.config_parameter
的一列 from odoo import models, fields, api
class AbcXyz(models.Model):
_name='abc.xyz'
b_ids=fields.One2many('xyz.abc','a_id',string="Xyz")
@api.model
def fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False):
res = super(AbcXyz, self).fields_view_get(view_id=view_id, view_type=view_type, toolbar=toolbar, submenu=submenu)
if view_type=='form' and self.b_ids:
for line in self.b_ids:
is_applying_view = eval(self.env['ir.config_parameter'].sudo().get_param('test_module.is_applying_k_qty'))
doc = etree.XML(res['arch'])
if is_applying_view:
for node in doc.xpath("//field[@name='line.k_qty']"):
node.set('invisible', '0')
else:
for node in doc.xpath("//field[@name='line.cartoon_qty']"):
node.set('invisible', '1')
return res
class XyzAbc(models.Model)
_name='xyz.abc'
@api.multi
def get_default_k_qty_visible(self):
return eval(self.env['ir.config_parameter'].sudo().get_param('test_module.is_applying_k_qty'))
a_id=fields.Many2one('abc.xyz',string="ABC")
<!---other fields--->
k_qty=fields.Integer(string="Cartoon Qty", default=0)
is_k_qty_visible = fields.Boolean(string="Is K Qty Visible", compute=get_default_cartoon_qty_visible, store=True)
基于is_k_qty_visible,我尝试隐藏k_qty列。
<record id="abc_form_view" model="ir.ui.view">
<field name="name">abc.form.view</field>
<field name="model">abc.xyz</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="ABC Process">
<notebook>
<page string="K Qty">
<field name="b_ids" nolabel='1' mode="tree">
<tree>
<field name="k_qty" attrs="{'invisible':[('is_k_qty_visible','!=',True)]}" />
</tree>
</field>
</page>
</notebook>
</form>
</field>
<record>
但这对我不起作用。
答案 0 :(得分:0)
这不是这个问题的答案。我分享了一些信息。
此代码用于隐藏odoo11中one2many(树)中的字段
< 字段名称=“ my_field” attrs =“ {'column_invisible':[('parent.field_name','=',False)]}” />
这种类型的代码只能在条件为“父母”的情况下起作用
我认为这种类型的代码也可以在odoo12中使用。