【问题标题】: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_namelast_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'
      

      【讨论】: