Skip to Content
Odoo Menu
  • Prisijungti
  • Išbandykite nemokamai
  • Programėlės
    Finansai
    • Apskaita
    • Pateikimas apmokėjimui
    • Sąnaudos
    • Skaičiuoklė (BI)
    • Dokumentai
    • Pasirašymas
    Pardavimai
    • CRM
    • Pardavimai
    • Kasų sistema - Parduotuvė
    • Kasų sistema - Restoranas
    • Prenumeratos
    • Nuoma
    Svetainės
    • Svetainių kūrėjimo įrankis
    • El. Prekyba
    • Internetinis Tinklaraštis
    • Forumas
    • Tiesioginis pokalbis
    • eMokymasis
    Tiekimo grandinė
    • Atsarga
    • Gamyba
    • PLM
    • Įsigijimai
    • Priežiūra
    • Kokybė
    Žmogaus ištekliai
    • Darbuotojai
    • Įdarbinimas
    • Atostogos
    • Įvertinimai
    • Rekomendacijos
    • Transporto priemonės
    Rinkodara
    • Socialinė rinkodara
    • Rinkodara el. paštu
    • SMS rinkodara
    • Renginiai
    • Rinkodaros automatizavimas
    • Apklausos
    Paslaugos
    • Projektas
    • Darbo laiko žiniaraščiai
    • Priežiūros tarnyba
    • Pagalbos tarnyba
    • Planavimas
    • Rezervacijos
    Produktyvumas
    • Diskucija
    • Patvirtinimai
    • IoT
    • VoIP
    • Žinių biblioteka
    • WhatsApp
    Trečiųjų šalių programos Odoo Studija Odoo debesijos platforma
  • Pramonės šakos
    Mažmeninė prekyba
    • Knygynas
    • Drabužių parduotuvė
    • Baldų parduotuvė
    • Maisto prekių parduotuvė
    • Techninės įrangos parduotuvė
    • Žaislų parduotuvė
    Food & Hospitality
    • Barai ir pub'ai
    • Restoranas
    • Greitasis maistas
    • Guest House
    • Gėrimų platintojas
    • Hotel
    Nekilnojamasis turtas
    • Real Estate Agency
    • Architektūros įmonė
    • Konstrukcija
    • Estate Managament
    • Sodininkauti
    • Turto savininkų asociacija
    Konsultavimas
    • Accounting Firm
    • Odoo Partneris
    • Marketing Agency
    • Teisinė firma
    • Talentų paieška
    • Auditai & sertifikavimas
    Gamyba
    • Textile
    • Metal
    • Furnitures
    • Maistas
    • Brewery
    • Įmonių dovanos
    Sveikata & Fitnesas
    • Sporto klubas
    • Akinių parduotuvė
    • Fitneso Centras
    • Sveikatos praktikai
    • Vaistinė
    • Kirpėjas
    Trades
    • Handyman
    • IT įranga ir palaikymas
    • Saulės energijos sistemos
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Kiti
    • Nonprofit Organization
    • Aplinkos agentūra
    • Reklaminių stendų nuoma
    • Fotografavimas
    • Dviračių nuoma
    • Programinės įrangos perpardavėjas
    Browse all Industries
  • Bendrija
    Mokykitės
    • Mokomosios medžiagos
    • Dokumentacija
    • Sertifikatai
    • Mokymai
    • Internetinis Tinklaraštis
    • Tinklalaidės
    Skatinkite švietinimą
    • Švietimo programa
    • Scale Up! Verslo žaidimas
    • Aplankykite Odoo
    Gaukite programinę įrangą
    • Atsisiųsti
    • Palyginkite versijas
    • Leidimai
    Bendradarbiauti
    • Github
    • Forumas
    • Renginiai
    • Vertimai
    • Tapkite partneriu
    • Services for Partners
    • Registruokite jūsų apskaitos įmonę
    Gaukite paslaugas
    • Susiraskite partnerį
    • Susirask buhalterį
    • Susitikti su konsultantu
    • Diegimo paslaugos
    • Klientų rekomendavimas
    • Palaikymas
    • Atnaujinimai
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Gaukite demo
  • Kainodara
  • Pagalba

Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:

  • CRM
  • e-Commerce
  • Apskaita
  • Atsarga
  • PoS
  • Projektas
  • MRP
All apps
You need to be registered to interact with the community.
All Posts People Badges
Žymos (View all)
odoo accounting v14 pos v15
About this forum
You need to be registered to interact with the community.
All Posts People Badges
Žymos (View all)
odoo accounting v14 pos v15
About this forum
Pagalba

How to hide some fields in Form View if no record found in many2many relationship?

Prenumeruoti

Get notified when there's activity on this post

This question has been flagged
filterattrsdomainmany2many
7 Replies
21856 Rodiniai
Portretas
Juris Malinens

Basic idea: Hide few fields in client form view for OpenERP users which are not defined as VIP users in my custom many2many table (user_id, partner_id)

What I've already done:

In res.partner form view:

<field name="vip_ids" widget="many2many_tags" placeholder="VIP users..."/>

My custom module which adds many2many relationship for res.partner module:

from openerp.osv import orm, fields
from osv import fields, osv
class res_partner_users_vip_rel2(osv.osv):
    _inherit = 'res.partner'
    _description = "VIP status for partner (users)"
    _columns = {
        'vip_ids': fields.many2many(
            'res.users',
            'res_partner_users_vip_rel2',
            'partner_id',
            'users_id',
            'VIP status'),
    }
res_partner_users_vip_rel2()

In Form View I can successfully save multiple users in newly created field, but I am stuck at hiding other fields for users who are not defined in my many2many relationship.

As I understand, I need to use attrs attribute but I don't understand how to use it with many2many relationship.

This doesn't work:

<field name="mobile" attrs="{'invisible': [('uid','in', vip_ids)]}"/>
<field name="fax" attrs="{'invisible': [('uid','in', vip_ids)]}"/>
<field name="email" widget="email" attrs="{'invisible': [('uid','in', vip_ids)]}"/>

Any advice would be greatly appreciated :)

0
Portretas
Atmesti
Portretas
aharoen
Best Answer

I have try this and working :

       <record id="view_0001" model="ir.ui.view">  
            <field name="name">XXXXXXX</field>
            <field name="model">res.partner</field>
            <field name="arch" type="xml">
                <form string="XXXXXXXXXX" version="7.0">
                    <group col="4" colspan="2">
                        <field name="ids_count"/> 
                        <field name="mobile" attrs="{'invisible': [('ids_count','=', 0)]}"/>
                        <field name="fax" attrs="{'invisible': [('ids_count','=', 0)]}"/>
                        <field name="email" widget="email" attrs="{'invisible': [('ids_count','=',0)]}"/> 
                    </group>
                    <field name="vip_ids"></field>

                </form> 
            </field>
       </record>

with modified model definiton

from openerp.osv import fields, osv
class res_partner_users_vip_rel2(osv.osv):
    _inherit = 'res.partner'
    _description = "VIP status for partner (users)"
    def getcount(self, cr, uid,ids,name,arg,context):
        res={}
        sql="""
            SELECT partner_id id, count(*) cnt FROM res_partner_users_vip_rel2 
            WHERE partner_id = """+str(ids[0])+""" GROUP BY partner_id """
        cr.execute(sql)
        res.update(dict(cr.fetchall()))
        if res!={}:
            return res 
        return {ids[0]:0}
    _columns = {                
        'ids_count':fields.function(getcount,type="integer",string='Count'),

        'vip_ids': fields.many2many(
            'res.users',
            'res_partner_users_vip_rel2',
            'partner_id',
            'users_id',
            'VIP status'),
         }

0
Portretas
Atmesti
Juris Malinens
Autorius

Thanks, but doesn't seem to work. Field is shown both when user is added in many2many relation and also when he s not

aharoen

I have edited my previous answer, and i have tried. It work.

Juris Malinens
Autorius

thank You! Only I added AND users_id= """+str(uid)+""" to the query

Portretas
Alf Olsen
Best Answer

You can also just compare to an empty array (I'm using Odoo 11)

<div attrs="{'invisible':[ ('boats', '=', []) ]}">
<label for="boats" class="o_ff_header"/>
<field name="boats"/>
</div>

3
Portretas
Atmesti
CARLOS ALBERTO GARCIA BRIZUELA

This way works great for me in Odoo 11, thanks !!

Portretas
Yogesh
Best Answer

Hello, 

It could be achieved without function field and only with xml. You can use attrs attribute like

attrs="{'invisible': [('m2m_field', '=', [(6, False, [])])]}"attrs="{'invisible': [('m2m_field', '=', [(6, False, [])])]}" 
            

On webclient m2m field outputs like [(6, False, [list_of_record_ids])], when there is no record list becomes empty and it outputs like [(6, False, [])] . It can be used in xml condition.

0
Portretas
Atmesti
Portretas
Juris Malinens
Autorius Best Answer

Thanks aharoen. Yesteday evening I came up with similar solution:

def _get_active_ids(self, cr, uid, ids, field_name, arg, context=None):
      result = {}
      for clase in self.browse(cr, uid, ids, context=context):
         result[clase.id] = False
         for membre in clase.vip_ids:
            if membre.id == uid:
                result[clase.id] = True
      return result

class res_partner_users_vip_rel2(osv.osv):
    _inherit = 'res.partner'
    _description = "VIP2 status for partner (users)"
    _columns = {
        'vip_ids': fields.many2many(
            'res.users',
            'res_partner_users_vip_rel2',
            'partner_id',
            'users_id',
            'VIP2 status'),
        'is_current_user_vip': fields.function(
            _get_active_ids,
            type='boolean',
            string="Does current user have VIP access?"),
    }

res_partner_users_vip_rel2()
0
Portretas
Atmesti
Enjoying the discussion? Don't just read, join in!

Create an account today to enjoy exclusive features and engage with our awesome community!

Registracija
Related Posts Replies Rodiniai Veikla
What is diff between domain, domain filter and attr ?
filter attrs domain
Portretas
1
saus. 24
16026
How to Use Domain Filter with Many2Many field
filter domain many2many
Portretas
Portretas
1
rugp. 24
8601
filter many2many field
filter domain many2many v14
Portretas
Portretas
1
rugs. 23
2990
Fied be Invisible if Many2Many value is selected. Solved
filter domain many2many invisible
Portretas
Portretas
Portretas
7
birž. 20
7638
How to filter Many2Many field containing zero items
filter domain many2many followers
Portretas
Portretas
2
liep. 17
4101
Bendrija
  • Mokomosios medžiagos
  • Dokumentacija
  • Forumas
Atvirasis kodas
  • Atsisiųsti
  • Github
  • Runbot
  • Vertimai
Paslaugos
  • Odoo.sh talpinimas
  • Palaikymas
  • Atnaujinti
  • Pritaikytas programavimo kūrimas
  • Švietimas
  • Susirask buhalterį
  • Susiraskite partnerį
  • Tapkite partneriu
Apie mus
  • Mūsų įmonė
  • Prekės ženklo turtas
  • Susisiekite su mumis
  • Darbo pasiūlymai
  • Renginiai
  • Tinklalaidės
  • Internetinis Tinklaraštis
  • Klientai
  • Teisinis • Privatumas
  • Saugumas
الْعَرَبيّة Català 简体中文 繁體中文 (台灣) Čeština Dansk Nederlands English Suomi Français Deutsch हिंदी Bahasa Indonesia Italiano 日本語 한국어 (KR) Lietuvių kalba Język polski Português (BR) română русский язык Slovenský jazyk slovenščina Español (América Latina) Español ภาษาไทย Türkçe українська Tiếng Việt

Odoo yra atvirojo kodo verslo programų rinkinys, kuris apima visas įmonės poreikius: CRM, El. Prekybą, Apskaitą, Atsargų, Kasų sistemą, Projektų valdymą ir kt.

Unikali Odoo vertės pasiūla – būti tuo pačiu metu labai lengvai naudojama ir visiškai integruota sistema.

Website made with

Odoo Experience on YouTube

1. Use the live chat to ask your questions.
2. The operator answers within a few minutes.

Live support on Youtube
Watch now