用default_get填充二进制字段

问题描述 投票:1回答:1

我有两个二进制字段。在销售订单行树视图中,我有一个打开向导的按钮。我选择并保存文件,它完美地保存在所选销售订单行的label_file字段中。

问题是,当我打开向导时,我希望将其视为已保存的文件,但未生成,路径中只有字节。

第一

Class SaleOrderLine(models.Model):
    _inherit = 'sale.order.line'

    label_file = fields.Binary('Saved Label')

保存在SaleOrderLine中

enter image description here

class OrderLineLabel(models.TransientModel):
    _name = 'order.line.label'


label_file_show = fields.Binary('Label file')


@api.multi
def write_label_vals(self):
    self.ensure_one()
    sale_order_line = self.env['sale.order.line'].browse(self.env.context.get('active_ids'))
    vals = {

        'label_file': self.label_file,

    }
    sale_order_line.write(vals)


@api.model
def default_get(self, fields):
    res = super(OrderLineLabel, self).default_get(fields)
    order_line_id = self.env['sale.order.line'].browse(self.env.context.get('active_ids'))

    status, headers, content = binary_content(model='sale.order.line', field='label_file', id=order_line_id.id,filename='test',download=True)
    #tried like this
    res['label_file_show'] = content

    #or just like this
    res['label_file_show'] = order_line_id.label_file

    return res

这是打开向导时的外观。

enter image description here

odoo odoo-9
1个回答
0
投票

您需要在二进制字段中添加filename

声明一个字符字段以保留名称:

label_file_name = fields.Char()

并使用filename属性为二进制字段指定文件名:

<field name="label_file_name" invisible="True"/>
<field name="label_file_show" filename="label_file_name"/>

write_label_vals中再添加一行以保存文件名。

order_line_id.label_file_name = self.label_file_name  
# vals = {'label_file': self.label_file, 'label_file_name': self.label_file_name}

在向导filename方法中设置default_get的值:

res['label_file_name'] = order_line_id.label_file_name
© www.soinside.com 2019 - 2024. All rights reserved.