简体   繁体   中英

Hide One2many field Conditionally Odoo/OpenERP

I am creating an option called Master Account within the customer portion of an Odoo 8.0 setup. If selected, it will set another account as the grandparent. This is useful for companies/customers who have multiple locations, but just one billing center. I was able to apply this functionality, but now I do not want to display the option to set a master account to a company that is already set as someone's master.

I have tried the following and it does not work:

PYTHON

from openerp import models, fields, api, _

class res_partner(models.Model):
    _inherit = 'res.partner'

    related_partner_id = fields.Many2one('res.partner', 'Master Account')
    related_partner_ids = fields.One2many('res.partner', 'Master Account')

XML

<?xml version="1.0" ?>
<openerp>
    <data>
        <record model="ir.ui.view" id="base_view_partner_demo_inherit">
            <field name="name">res.partner.form.demo</field>
            <field name="model">res.partner</field>
            <field name="inherit_id" ref="base.view_partner_form" />
            <field name="arch" type="xml">
                <field name="website" position="after">
                    <field name="related_partner_id" attrs="{'invisible': [('related_partner_ids','>', '0')]}"/>
               <field name="related_partner_ids"  invisible="1"/>
               <label string="Master Account" attrs="{'invisible': [['related_partner_id', '!=', False]]}"/>
                </field>
            </field>
        </record>


    </data>
</openerp>

Any help would be greatly appreciated. I'm brand new to Odoo.

Try following,

from openerp import models, fields, api, _

class res_partner(models.Model):
    _inherit = 'res.partner'

    related_partner_id = fields.Many2one('res.partner', 'Master Account')
    related_partner_ids = fields.One2many('res.partner', 'related_partner_id', 'Master Account')

One2many required inverse field id as well. And set attrs like this,

<field name="related_partner_id" attrs="{'invisible': [('related_partner_ids','!=', False)]}"/>

Or You should write like this

<field name="related_partner_id" attrs="{'invisible': [('related_partner_ids','!=', [])]}"/>

For Many2many fields, attrs should be applied in following manner.

<field name="m2m_field" attrs="{'invisible': [('m2m_field','=', [(6,0,[])])]}"/>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM