我在 OpenERP 中有一个生成 CSV 文件的 python 方法。我的问题是如何将 CSV 的默认路径设置为本地路径,而不是服务器上的路径。
我的部分代码有这个 with open('export_data.csv', 'wb') as csvfile:。将文件保存在服务器上。我希望将文件保存在客户端位置。
您知道如何实现这一点吗?
openerp 内置的导出数据功能不是一个选项。
请您参考如下方法:
使用 fields.binary
在 OpenERP 中向客户端返回二进制文件的一种常见方法是使用 fields.binary 列。您可以将其放入仅在 session 期间存在的 TransientModel 对象(以前称为 osv_memory,用于创建交互式向导)。二进制字段值可以设置为先前操作的结果,或者可以通过 fields.function 列模拟它来即时计算。
你可以在官方插件中找到几个这样的例子,比如 translation export wizard生成 CVS/PO/TGZ 文件。一个缺陷是,出于历史 RPC 传输原因,二进制值必须采用 base64 编码。
使用静态下载 URL
从 OpenERP 6.1 开始,还可以提供从服务器文件系统直接下载文件的功能。它就像将文件的 URL 放在 fields.char 值中一样简单,作为根植于您的模块的相对 URL,例如/模块/路径/到/文件。然后使用 widget="url" 在表单 View 中添加此字段作为链接。使用它的一种情况是 configuration wizard邮件客户端插件。
这适用于作为模块一部分的静态文件,但不适用于系统因用户操作而生成的文件,因为它们可能不应该存储在模块的文件系统中,即使是暂时的。在适当安全的安装中,OpenERP 服务器进程甚至可能没有权限写入模块源所在的文件系统。
还有其他选择,例如编写您自己的 Web Controller ,但上述解决方案在大多数情况下应该都能很好地工作。
