【问题标题】:'Image' object has no attribute '_committed' while generating Qr code from model从模型生成二维码时,“图像”对象没有属性“_committed”
【发布时间】:2020-05-05 02:19:39
【问题描述】:
from django.db import models
import qrcode

型号

# Create your models here.
class Customer(models.Model):
    name=models.CharField(max_length=255)
    address=models.CharField(max_length=255)
    gender=models.CharField(max_length=255)
    registerd_date=models.DateTimeField(auto_now_add=True, blank=True)
    Image = models.ImageField(upload_to="media/static/images/",blank=True,null=True)


    def __str__(self):
        return self.name

函数获取数据并转换为二维码并保存到模型字段数据

    def save(self, *args, **kwargs):
       self.Image=qrcode.make(self.name)
       super(Customer,self).save(*args, **kwargs)

【问题讨论】:

标签: django


【解决方案1】:

解决方法之一:

def save(self, *args, **kwargs):
    if not self.Image:
        from tempfile import TemporaryFile
        from django.core.files.storage import default_storage
        from django.core.files.base import ContentFile
        from django.utils.encoding import force_text
        import qrcode
        with TemporaryFile() as f:
            img = qrcode.make(self.name)
            img.save(f)
            f.seek(0)
            self.Image = default_storage.save(force_text("%s.png"%self.name), 
                ContentFile(f.read()))
    super(Customer,self).save(*args, **kwargs)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    相关资源
    最近更新 更多