我正在根据模型生成二维码。我在Heroku托管这个应用程序,并使用aws3作为sotrage。S3的存储与其他模型元素一起工作得很好,只是QR代码生成的模型有问题。我用这个链接作为参考: https://gilang.chandrasa.com/blog/generate-qr-code-in-django-model/ 我的模型是:
class BusinessQRCode(models.Model):
business = models.ForeignKey(Business, null=True)
location_name = models.CharField(max_length=255)
qrcode = models.ImageField(upload_to='documents/{}'.format(time.strftime("%Y/%m/%d")), blank=True, null=True)
def save(self):
super(BusinessQRCode, self).save()
self.generate_qrcode()
def generate_qrcode(self):
from activation.models import RandomFileName
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4,
)
qr.add_data('Some data')
qr.make(fit=True)
filename = 'qrcode-%s.png' % self.id
img = qr.make_image()
from django.conf import settings
img.save(settings.MEDIA_ROOT + filename)
# reopen = open(settings.MEDIA_ROOT + filename, "rb")
# django_file = File(reopen)
self.qrcode.save(filename,img, save=True)
上面的代码给出了以下错误:
^{pr2}$我也尝试过使用带注释的代码,这是打开文件,而不是试图保存它,但它不起作用,它只是从来没有停止加载。我的意思是这部分代码最后:
reopen = open(settings.MEDIA_ROOT + filename, "rb")
django_file = File(reopen)
self.qrcode.save(filename,django_file, save=True)
我做错什么了?在
我认为最后一种方法应该行得通,但是由于您在保存ImageField时使用了
save=True
,这也将触发父模型的save()
方法。所以你会在一个无限循环中结束。在更改保存imagefield和模型的顺序。在
相关问题 更多 >
编程相关推荐