二进制字段下载链接在Odoo的one2many字段内的treeview或listview中使用

时间:2016-05-15 18:23:59

标签: python openerp odoo-8 openerp-7 openerp-8

我使用的是Odoo 8版本。

我创建了一个名为 enquiry_customer_date 的新模型

在该模型中,我设置了以下四个字段。

  • partner_id(many2one),
  • enquiry_date(date),
  • file_name(char)和
  • excel_file(二进制)

我已经提到了与 res.partner 模型的模型one2many关系

我在下面的代码中使用了显示记录。

<field name="enquiry_from_customer_ids">
    <tree string="Enquiry Lines">
        <field name="enquiry_date"/>
        <field name="file_name" invisible="1"/>
        <field name="excel_file" filename="file_name"/>
    </tree>    
</field>

这将在列表视图中显示正确的文件名。

面子问题:

当我下载链接时,它会以 .bin 扩展名存储文件名= base64。

问题

如何在 one2many 字段中获取与上传文件名相同的工作下载链接?

已更新

我试过@danidee的答案。

系统配置参数:

System configuration parameter

Treeview / Listview one2many字段

Treeview/Listview one2many field

输出:

enter image description here

预期产出:

应使用&#34; Openerp_Customization_Needed.txt&#34;

下载文件

2 个答案:

答案 0 :(得分:1)

默认情况下,文件和附件作为二进制文件存储在数据库中,但您可以通过设置ir_attachement.location参数

来更改该行为

选择Settings/Parameters/System Parameters,查找ir_attachment.location它应设置为db将其更改为

file:///filestore

请注意,现有附件和文件仍将存储在数据库中,但上传的任何新附件或文件都将存储在文件系统中,这样您就可以按原样下载文件原始格式

答案 1 :(得分:1)

是的,您可以像在树视图中添加按钮一样导出文件,而不是直接在树视图中提供二进制字段名称。请在enquiry_customer_date模型中添加以下代码

@api.multi
def export_file( self ):
    return {
        'type' : 'ir.actions.act_url',
        'url':   '/web/binary/saveas?model=ir.attachment&field=datas&filename_field=self.file_name&id=%s' % ( self.excel_file.id ),
        'target': 'self',
        }

在xml文件中添加以下代码

<field name="enquiry_from_customer_ids">
    <tree string="Enquiry Lines">
        <field name="enquiry_date"/>
        <field name="file_name" invisible="1"/>
        <field name="excel_file" filename="file_name"/>
        <button name="export_file" string="Download" type="object" icon="gtk-ok" class="oe_highlight" />  
    </tree>    
</field>