python – Django – 在上传图片时使用instance.id.
发布时间:2020-12-20 12:00:41 所属栏目:Python 来源:网络整理
导读:我指的是这个 youtube video,了解如何使用ImageField上传图像.他已经解释了如何在保存图像时使用instance.id.我试了一下,但是instance.id正在返回None.而对他来说它完美无缺.以下是代码: #models.pyimport osdef get_image_path(instance,filename): return
我指的是这个
youtube video,了解如何使用ImageField上传图像.他已经解释了如何在保存图像时使用instance.id.我试了一下,但是instance.id正在返回None.而对他来说它完美无缺.以下是代码:
#models.py import os def get_image_path(instance,filename): return os.path.join(str(instance.id),filename) class AdProfile(models.Model): name = models.CharField(max_length=100) profile_image = models.ImageField(upload_to=get_image_path,blank=True,null=True) 每当保存文件时,其保存为None / filename. 即使这个link通知也是如此.我正在使用Django 10.5和MySQL数据库. 可能是什么问题? 解决方法
Django管理员以某种方式调用了get_image_path函数而没有将模型保存到数据库,因此id为None.我们可以使用save方法覆盖django模型并确保保存图像并且get_image_path获取具有id的实例
class AdProfile(models.Model): name = models.CharField(max_length=100) profile_image = models.ImageField(upload_to=get_image_path,null=True) # Model Save override def save(self,*args,**kwargs): if self.id is None: saved_image = self.profile_image self.profile_image = None super(AdProfile,self).save(*args,**kwargs) self.profile_image = saved_image if 'force_insert' in kwargs: kwargs.pop('force_insert') super(AdProfile,**kwargs) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |