【问题标题】:How to add default image in django rest?如何在 django rest 中添加默认图像?
【发布时间】:2026-02-13 10:25:05
【问题描述】:
我有一个类似于
的用户配置文件模型
class Profile(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30,blank=True)
dp = models.ImageField(upload_to = '/media/images/dp/',blank=True)
在发帖期间,我传递了first_name 和last_name。我有一个物理存储在/media/images/dp/default.jpg 中的图像。在创建过程中如何将此图像设置为每个配置文件的默认设置?
提前致谢。
【问题讨论】:
标签:
django
image
django-models
django-rest-framework
【解决方案1】:
您可以在模型上指定默认图像,如下所示:
class Profile(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30,blank=True)
dp = models.ImageField(upload_to = '/media/images/dp/',blank=True, default= '/media/images/dp/default.jpg', null=True, blank=True)
所以,当你创建模型时,如果不发送dp图片,django会使用默认值。
【解决方案2】:
我个人喜欢让我的模型字段尽可能“精简”,并在属性上“增肥”它们以便于更改,而无需更改数据库表。
话虽如此,我建议在您的模型上创建一个属性来检查用户上传的个人资料图片,否则显示默认图片。另外,我会将您的上传位置设置为一个功能,以方便更改。
def upload_location(filename):
return "media/images/dp/{}".format(filename)
class Profile(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30,blank=True)
dp = models.ImageField(upload_to=upload_location', null=True, blank=True)
@property
def default_picture(self):
if self.dp:
return "{}{}".format(settings.MEDIA_URL, self.dp)
return '/media/images/dp/default.jpg'