2017-07-06 3 views
1

Ich habe ein Feld, das ich ausblenden möchte, wenn bestimmte Journal ausgewählt.Invisible Feld auf Bedingung in odoo

<field name="any_field" attrs="{'invisible':[('journal_id','=',10])]}"/> 

Und für den obigen Code funktioniert gut.

Ich bin sicher, es ist kein Weg, um die Bedingung zu überprüfen. So, ich habe es so versucht.

<field name="any_field" attrs="{'invisible':[('journal_id','=',ref('my_module.account_journal_10'))]}"/> 

Es funktioniert dann habe ich versucht, durch das statische Feld auf dem Zapfen zB mit. Code.

<field name="any_field" attrs="{'invisible':[('journal_id.code','=','CARD')]}"/> 

Aber immer noch nicht funktioniert und Fehler aus Sicht zu bekommen.

Ich denke, wenn ich die Attrs von .py wie ich für Domäne zurückgeben kann.

z.

return {'domain': 
      { 
       'any_field':[('journal_id','=',self.env.ref('my_module.account_journal_10').id)] 
      } 
     } 

Kann mir jemand dabei helfen? Danke.

Antwort

2

Soweit ich weiß, diese attrs Domänen/Filter sind Client-Seite, so dass Sie nicht wie journal_id.code oder partner_id.customer verwenden können, weil der Client nicht über solche Daten weiß.

Eine mögliche Problemumgehung besteht darin, ein zugehöriges Feld in dem Modell zu definieren, in dem Sie dies versuchen. Nehmen wir an, das Modell ist my.model und schon hat dieses Many2one Feld journal_id:

journal_code = fields.Char(string="Journal Code", related="journal_id.code") 

Nun müssen Sie den Blick auf my.model erweitern:

<field name="journal_code" invisible="1" /> 
<field name="any_field" attrs="{'invisible':[('journal_code','=','CARD')]}"/>