Как экспортировать данные из любой модели, не добавляя новый вид дерева и пункт меню?Как показать вид дерева по умолчанию для любой модели? - PullRequest
0 голосов
/ 29 ноября 2018

Обычно, если вы хотите экспортировать данные в CSV с помощью интерфейса Odoo, вам необходимо выполнить следующие шаги:

  1. Перейти к «дереву» (или к «списку» в новомверсии) представление модели, в которую вы хотите экспортировать некоторые данные
  2. Выберите несколько записей для экспорта в файл CSV
  3. Подробнее> Экспорт
  4. Выберите поля для экспорта

И это все.Это нормально для моделей, которые уже имеют древовидное представление, доступное из пункта меню.Но если вы хотите экспортировать данные из модели, у которой нет представления или элемента меню для доступа к представлению, вы не сможете экспортировать записи, если не создадите элемент меню + действие + представление.

Я знаю, чтодревовидное представление любой модели может быть показано, даже если форма не была создана вручную.Odoo создает форму по умолчанию для любой модели, если она не создана программистом.

Итак, у меня следующие вопросы:

  • Как экспортировать данные из любой модели без добавления нового дереваview и menuitem и action?
  • Как показать древовидное представление по умолчанию для любой модели без прямого доступа (menuitem)?

Боюсь, единственный способ - это создать кнопку вir.model представление формы, чтобы показать древовидное представление для этой модели.Любая другая идея?Уже есть способ или модуль, чтобы сделать это?

Мне интересно, если есть какой-то трюк, использующий некоторые параметры в URL, адрес использует идентификатор menuitem и идентификатор действия:

http://localhost:8069/web?debug=#view_type=list&model=ir.ui.view&menu_id=41&action=25

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

1 Ответ

0 голосов
/ 03 декабря 2018

Ну, я не нашел быстрого трюка.Но лучший подход - создать собственный модуль, чтобы добавить кнопку в форму ir.model и вернуть вид дерева по умолчанию, например:

@api.multi
def show_tree_view(self):
    self.ensure_one()
    return {
        'name': _("Export data"),
        'view_type': 'form',
        'view_mode': 'tree,form',
        'res_model': self.model,
        'view_id': False,
        'type': 'ir.actions.act_window',
        'context': self.env.context,
    }

И все, кнопка покажет любое дерево.вид, где пользователь может выбрать записи для экспорта:)

Код вида будет:

<record id="view_model_form_inherit" model="ir.ui.view">
    <field name="model">ir.model</field>
    <field name="inherit_id" ref="base.view_model_form" />
    <field name="arch" type="xml">
        <field name="name" position="before">
            <button type="object" name="show_tree_view" string="Show tree view" />
        </field>
    </field>
</record>
...