Объект 'Image' не имеет атрибута '_committed' при генерации кода Qr из модели - PullRequest
0 голосов
/ 05 мая 2020
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

функция принимает данные и конвертирует в qr-код и сохраняет данные поля модели

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

1 Ответ

0 голосов
/ 05 мая 2020

один из способов решить:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...