Как скрыть определенный столбец в виде дерева для odoo12? - PullRequest
1 голос
/ 03 июля 2019

У меня одно поле было М2о, а то противоположное О2м.Я пытаюсь отобразить поле O2m в классе M2o таким же образом и отобразить все поле 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)

based 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>

Но он не работает для меня.

1 Ответ

0 голосов
/ 03 июля 2019

Это не ответ на этот вопрос. Я поделился некоторой информацией.

Этот код используется для скрытия полей в one2many (дереве) в odoo11

< field name = "my_field" attrs = "{'column_invisible': [('parent.field_name', '=', False)]}" />

этот тип кода работает только дает 'parent' в условии

Я думаю, этот тип кода будет работать и в odoo12.

...