【问题标题】:fill up binary field with default_get用 default_get 填充二进制字段
【发布时间】:2020-05-19 15:52:00
【问题描述】:

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

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

第一

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

    label_file = fields.Binary('Saved Label')

保存在 SaleOrderLine

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

这是我打开向导时的样子。

【问题讨论】:

    标签: odoo odoo-9


    【解决方案1】:

    您需要将filename 添加到二进制字段。

    声明一个 char 字段来保存名称:

    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}
    

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

    res['label_file_name'] = order_line_id.label_file_name
    

    【讨论】:

      猜你喜欢
      • 2011-12-02
      • 1970-01-01
      • 1970-01-01
      • 2019-05-19
      • 1970-01-01
      • 2020-11-25
      • 2012-01-22
      • 1970-01-01
      • 2010-11-05
      相关资源
      最近更新 更多