首页 > 解决方案 > ValueError:对已关闭文件的 I/O 操作。在 Django 中将二维码保存到数据库时

问题描述

在这里,我想将我的 qr_code 保存到数据库,但我面临以下错误

ValueError:对已关闭文件的 I/O 操作。

    def qr_code_file_name(instance, filename):
        return '%s/qr_codes/%s/' % (instance.client_id, filename)
    
    class ProductItems(models.Model):
        item_name = models.CharField(max_length=512)
        qr_code = models.ImageField(upload_to=qr_code_file_name, blank=True, null=True)
    
    
        def __unicode__(self):
            return self.item_name
    
        def save(self, *args, **kwargs):
            qrcode_img = qrcode.make(self.item_name)
            canvas = Image.new('RGB',(90,90),'white')
            draw = ImageDraw.Draw(canvas)
            canvas.paste(qrcode_img)
            fname = File('qrcode-code1.png')
            buffer = BytesIO()
            canvas.save(buffer,'PNG')
            self.qr_code.save(fname,File(buffer),save=False)
            canvas.close()

标签: pythondjangodjango-modelsdjango-viewsdjango-forms

解决方案


推荐阅读