如何将图像加载到bd,生成时我生成qr图像(QRcode),我需要在bd中创建一个新记录,以保存此图像并编码heslef
这是我的模特
class QRCode(models.Model):
user = models.ForeignKey(UserProfile, blank=True, default=None)
qr_code = models.CharField(max_length=120)
qr_code_img = models.ImageField(upload_to="qr_code_img/", width_field="width_field", height_field="height_field")
upcoming_show = models.ForeignKey(SectionUpcomingShow)
width_field = models.IntegerField(default=270)
height_field = models.IntegerField(default=270)
is_active = models.BooleanField(default=True)
timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)
updated = models.DateTimeField(auto_now_add=False, auto_now=True)
def __str__(self):
return "{0} - - {1}".format(self.user.username, self.is_active)
class Meta:
ordering = ["-timestamp"]
verbose_name = 'QRCode'
verbose_name_plural = 'QRCodes'
@property
def image_path(self):
return os.path.abspath(self.qr_code_img)
这是对gen qrimg
的看法def qr_code_generator(hex_code, username, __show__id, __show__name__, __show__q, price):
qr_code_generate_himslef = pyqrcode.create(hex_code)
generate_name = ''.join(username + '_' + str(__show__id) + '_' + __show__name__ + '_' + str(__show__q) + '_' + str(price) + '.png').replace(" ", "_")
qr_code_generate_himslef.png(generate_name, scale=6)
print(qr_code_generate_himslef)
return qr_code_generate_himslef
当我打印此功能时,我得到了这个
QRCode(content=b'f40a03cb6026d68f0f83c43b47c9e388ed106848', error='H', version=5, mode='binary')
这是我的保存视图
new_qr_code, created = QRCode.objects.get_or_create(user=get_user_profile, qr_code=hex_code, is_active=True, defaults={"user":get_user_profile, "qr_code":hex_code, "qr_code_img":qr_img, "upcoming_show":get_upcoming_show})
if not created:
pass
答案 0 :(得分:1)
运行此功能时
def qr_code_generator(hex_code, username, __show__id, __show__name__, __show__q, price):
qr_code_generate_himslef = pyqrcode.create(hex_code)
generate_name = ''.join(username + '_' + str(__show__id) + '_' + __show__name__ + '_' + str(__show__q) + '_' + str(price) + '.png').replace(" ", "_")
qr_code_generate_himslef.png(generate_name, scale=6)
print(qr_code_generate_himslef)
return qr_code_generate_himslef
qr_code图像文件将在您的根目录(具有manage.py文件的目录)中生成,其名称为'generate_name'变量值。
然后打开那个图像import os
from django.core.files import File
with open(generate_name, 'rb') as qr_img:
new_qr_code, created = QRCode.objects.get_or_create(user=get_user_profile, qr_code=hex_code, is_active=True, defaults={"user":get_user_profile, "qr_code":hex_code, "qr_code_img":File(qr_img), "upcoming_show":get_upcoming_show})
if not created:
pass
并且您的qr_image将上传到模特字段中给出的'upload_to'位置。您可以将此代码放在try块中以避免异常。
然后你可以删除该函数生成的无用的qr代码图像
os.remove(generate_name)
希望它有所帮助...