Привет!
Я крайне неопытен в Django и мне нужна помощь.
Я попытался переопределить метод save(), чтобы вместе с ним происходила генерация QR кода и последующее сохранение.
Однако при cохранении записи в папке media у меня появляются два файла.
Один файл ("10.png") состоит из поля slug модели и расширения.
Файл создаётся после выполнения этой строки:
self.qr.save(self.slug+'.png', BytesIO(qr), save=False)
Имя другого файла генерирует сам Django (уже после создания первого) и его же сохраняет в поле qr модели.
Как сделать так, чтобы создавался только один файл ( только "10.png") и в поле сохранялся именно он?
Model.py
class Url(models.Model):
slug = models.CharField(max_length=50, unique=True)
qr = models.FileField(upload_to='', blank=True, null=True)
def save(self, *args, **kwargs):
qr = self.qr_generate(self.slug)
self.qr.save(self.slug+'.png', BytesIO(qr), save=False)
super(Url, self).save(*args, **kwargs)
def __str__(self):
return self.slug
@staticmethod
def qr_generate(slug):
qr = qrcode.QRCode(
version=None,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4,
)
qr.add_data("somedata" + str(slug))
qr.make(fit=True)
img = qr.make_image(fill_color="black", back_color="white")
qrByte = BytesIO()
img.save(qrByte)
return qrByte.getvalue()