如何从任何模型中导出数据而不添加新的树形视图和菜单项?如何显示任何模型的默认树视图?

时间:2018-11-28 21:04:31

标签: odoo export-to-csv odoo-8 odoo-10 odoo-11

通常,如果要使用Odoo界面将数据导出到CSV,则需要执行以下步骤:

  1. 转到要导出某些数据的模型的“树”视图(在新版本中称为“列表”)
  2. 选择一些记录以将其导出到csv文件
  3. 更多>导出
  4. 选择要导出的字段

就是这样。对于已经具有可从菜单项访问的树视图的模型,这是可以的。但是,如果要从没有视图或菜单项访问模型的模型中导出数据,则除非创建菜单项+动作+视图,否则无法导出记录。

我知道即使不是手动创建表单,也可以显示任何模型的树状视图。如果程序员没有创建,那么Odoo会为任何模型创建默认表单。

所以,我的问题是:

  • 如何从任何模型中导出数据而不添加新的树形视图,菜单项和操作?
  • 如何显示没有直接访问(菜单)的任何模型的默认树视图?

恐怕唯一的方法是在ir.model表单视图中创建一个按钮,以显示该模型的树形视图。还有其他想法吗?已经有一种方法或模块可以做到这一点吗?

我想知道在URL中使用某些参数是否有一些技巧,地址使用menuitem id和action id:

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

我知道我可以在导出弹出窗口中导出与某些模型浏览相关的数据,但是您不能导出其他模型的所有记录,而只能导出与当前模型相关的记录。

1 个答案:

答案 0 :(得分:1)

好吧,我没有找到任何快速的把戏。但是最好的方法是创建一个自定义模块,以便向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>