Как скрыть кнопку в Odoo 11?

#python #xml #odoo

#python #xml #odoo

Вопрос:

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

Для этого (это не работает) при добавлении tasks_count :

 <button name="%(sale.action_view_sale_advance_payment_inv)d" string="Create Invoice"
                    type="action" context="{'default_advance_payment_method': 'percentage'}"
                    attrs="{'invisible': ['|','|',('tasks_count', '>', 0),('invoice_status', '!=', 'no'), ('state', '!=', 'sale')]}"/>
  

И для этого (это работает) при добавлении invoice_count :

 <button name="%(sale.action_view_sale_advance_payment_inv)d" string="Create Invoice"
                        type="action" context="{'default_advance_payment_method': 'percentage'}"
                        attrs="{'invisible': ['|','|',('invoice_count', '>', 0),('invoice_status', '!=', 'no'), ('state', '!=', 'sale')]}"/>
  

И сказать вам, что поля tasks_count и invoice_count находятся в одной и той же модели, в одном и том же представлении

В чем проблема! почему ошибка показывает мне, что :

Поле ‘tasks_count’, используемое в атрибутах, должно присутствовать в представлении, но отсутствует

Ответ №1:

Вы должны поместить поле tasks_count в представление XML, где вам нужно создать кнопку. И необходимо поместить это поле перед кнопкой. Например, следующее:

     <field name="tasks_count"/>
  

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

     <field name="tasks_count" invisible="1"/>
  

Надеюсь, это вам поможет. Спасибо.

Ответ №2:

действительно, вы можете использовать только те поля, которые присутствуют в представлении. Поля загружаются из базы данных только в том случае, если представление запрашивает его загрузку 😉