2016-05-27 1 views
1

je voudrais faire un champ de many2one invisible lorsqu'il est appelé par « ajouter un élément » dans la vue One2Many, par exemple:Comment rendre Many2One invisible lorsque le formulaire est appelé via 'ajouter un élément' dans la vue parente?

parent view : 
    Name = 'this is One2many field' 
    value 1 = 
    value 2 : add an item 

child view : 
    Parent Name = 'this is Many2one field' 
    value 1 = .... 

et quand je clique sur « ajouter un élément » je voudrais obtenir la vue folowing:

child view : 
    value 1 = ... 

j'ai essayé la mise attrs="{'invisible':[('parent_id', '!=', False)]}" dans la vue de l'enfant, mais cela est toujours vrai, car les champs parents ne sont pas encore créés. Une idée ?

Répondre

1

Il existe un moyen très simple d'obtenir ceci en définissant une vue en forme en ligne pour ce seul champ.

Voici un exemple pour votre référence.

<field name="one2many_field_name"> 
    <tree> 
     <field name="field1" /> 
     <field name="field2" /> 
     <field name="field3" /> 
    </tree> 
    <form> 
     <field name="field1" invisible="1" /> 
     <field name="field2" /> 
     <field name="field3" /> 
    </form> 
</field> 

Alors que vous cliquez sur « Ajouter un élément » il rendra vue sous forme qui est définie en ligne et s'il n'y a pas de vue en ligne définie alors il prendra vue forme que vous avez créé à l'extérieur. Ainsi, vous pouvez définir une vue en ligne pour de nombreux champs de 2mois/1mois, de cette manière, vous pouvez définir directement le comportement de tous les champs.

+0

Ceci est exactement ce dont j'avais besoin, je ne savais pas que nous pouvons définir les vues en ligne dans les champs One2many. Je vous remercie :) –

1

Vous pouvez y parvenir en définissant le contexte dans le champ one2many en mode parent.

Je vais vous expliquer par l'exemple. placement_line est le champ parent one2many. Dans ce jeu le contexte comme ci-dessous le code.

<field name="placement_line" context="{'one2many':True}" /> 

Ici, student_id est l'enfant manyone champ de vision du formulaire. Voir le code ci-dessous.

<field name="student_id" invisible="context.get('one2many')"/> 

par des paramètres tels que le code ci-dessus dans votre formulaire parent et enfant formulaire, vous pouvez champ enfant invisible (many2one) lorsque le formulaire d'enfant ouvert de « ajouter un élément » dans la vue One2Many.

0

si le formulaire est très simple, vous faites l'arbre modifiable

<tree editable="top"> 

que pas besoin de montrer le champ many2one dans l'arbre, il prend l'identifiant du modèle automaticly lorsque vous ajoutez un objet