Как сделать Many2One невидимым, когда форма вызывается через «добавить элемент» в родительском представлении?

Я хотел бы сделать поле many2one невидимым при вызове «добавить элемент» в представлении One2many, например:

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

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

и когда я нажимаю «добавить элемент», я хотел бы получить следующее представление:

child view :
   value 1 = ...

Я попытался установить attrs="{'invisible':[('parent_id', '!=', False)]}" в дочернем представлении, но это всегда верно, потому что родительские поля еще не созданы. Есть идеи ?


person Nero Ouali    schedule 27.05.2016    source источник


Ответы (2)


Существует очень простой способ добиться этого, определив встроенное представление формы для этого поля one2many.

Вот пример для справки.

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

Пока вы нажимаете «Добавить элемент», он отображает вид формы, который определен как встроенный, и если встроенный вид не определен, тогда он принимает вид формы, который вы создали извне.

Таким образом, вы можете определить встроенное представление для полей many2many / one2many, таким образом вы можете напрямую определить поведение любых полей.

person Emipro Technologies Pvt. Ltd.    schedule 28.05.2016
comment
Это именно то, что мне нужно, я не знал, что мы можем определять представления, встроенные в поля One2many. Спасибо :) - person Nero Ouali; 28.05.2016

Вы можете добиться этого, установив контекст в поле one2many в представлении родительской формы.

Я объясню вам на примере. placement_line – это поле one2many родительского представления. В этом установите контекст, как показано ниже.

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

Здесь student_id – это поле просмотра формы для многих дочерних элементов. См. приведенный ниже код.

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

С помощью настроек, подобных приведенному выше коду в вашей родительской форме и дочерней форме, вы можете скрыть дочернее поле (many2one), когда дочерняя форма открывается из «добавить элемент» в представлении One2many.

person Nilesh Sheliya    schedule 28.05.2016