我正在使用qrcode来生成二维码。当购买了门票或者购买被确认后,我希望生成一个二维码图片并使用PIL进行一些修改。最后将修改后的画布保存到模型的Image字段中。
class Ticket(models.Model):
booked_at = models.DateTimeField(default=timezone.now)
qrcode_file = models.ImageField(upload_to='qrcode', blank=True, null=True)
bought = models.BooleanField(default=False)
def save(self, *args, **kwargs):
if self.bought:
...
...
qrcode_img = qrcode.make('some data')
canvas = Image.new('RGB', (total_width, total_height), 'white')
draw = ImageDraw.Draw(canvas)
position = (left, top)
canvas.paste(qrcode_img, position)
self.qrcode_file = canvas
self.booked_at = timezone.now()
super(Ticket, self).save(*args, **kwargs)
canvas.close()
qrcode_img.close()
else:
self.booked_at = timezone.now()
super(Ticket, self).save(*args, **kwargs)
但是这会抛出一个错误:
AttributeError: 'Image' 对象没有属性 '_committed'
我该如何将生成的PIL图像保存到Django的ImageField中?
canvas = Image.new("RGB", (total_width, total_height), white)
中的 "Image" 是从哪里来的? - Martins