python – Django – 在上传图片时使用instance.id.
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – Django – 在上传图片时使用instance.id.,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1178字,纯文字阅读大概需要2分钟。
内容图文
我指的是这个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, blank=True, 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, self).save(*args, **kwargs)
内容总结
以上是互联网集市为您收集整理的python – Django – 在上传图片时使用instance.id.全部内容,希望文章能够帮你解决python – Django – 在上传图片时使用instance.id.所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。