Odoo13_上傳文件並指定保存到位置


1.models.py

    # 上傳文件字段,要繼承ir.attachment,且多對多,並在視圖中加上widget="many2many_binary"。
    udate_file = fields.Many2many('ir.attachment', string=u'上傳附件')
    udate_file_dir = fields.Char(string="附件路徑", compute="copy_file", store=True)
    demo_order_name = fields.Char(string="附件名稱", compute="_value_pc", store=True)

    # 獲取附件名稱
    @api.depends('udate_file')
    def _value_pc(self):
        for record in self:
            for d in self.udate_file:
                record.demo_order_name = d.name


    # 將上傳的文件保存到本地
    @api.depends('udate_file')
    def copy_file(self):
        # 如果上傳文件對象集合有內容
        if self.udate_file:
            # 循環文件對象集合
            for d in self.udate_file:
                # 轉換格式
                content_base64 = base64.b64decode(d.datas)
                dir = os.getcwd()
                # 寫入文件
                with open(dir+'/static/' + d.name, 'wb') as f:
                    f.write(content_base64)
                # 保存附件路徑
                for i in self:
                    i.udate_file_dir = dir+'/static/' + d.name

2.views.xml

                            <field name="udate_file" widget="many2many_binary"/>
                            <field name="demo_order_name"/>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM