gpt4 book ai didi

python - Django - 在上传图像时使用 instance.id

转载 作者:可可西里 更新时间:2023-11-01 07:49:28 24 4
gpt4 key购买 nike

我指的是这个 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,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44313667/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com