如果空的话,提供默认的个人资料图片

问题描述

| 我想为用户提供默认的个人资料图片。我已经在ѭ0上使用了默认功能,但是它的行为比默认值更像\'initial \'。我已经阅读了以下问题的答案:Django的ORM中ImageField的默认图像,但我想在模型级别解决该问题,并且无法解决FK关系。 这是我目前拥有的:
class Avatar(models.Model):
    avatar = models.ImageField(upload_to=upload_to)
    avatar_thumbnail = models.ImageField(upload_to=upload_to)
    profile = models.ForeignKey(UserProfile)

class UserProfile(models.Model):
    user = models.ForeignKey(User,unique=True)
    ...
我已经尝试将以下函数添加到UserProfile模型中(而且很可能是不正确的代码)-
 # in UserProfile(models.Model) 
   def create_default_avatar(self):
       if not self.avatar_set.all():
          avatar = profile.avatar_set.create(profile=self.__class__)
          avatar.avatar = File(open(\'media/default_profile_picture.jpg\'))
          avatar.avatar_thumbnail = File(open(\'media/default_profile_picture_thumbnail.jpg\'))
          avatar.save()
有人可以告诉我如何为个人资料创建真实的默认图片。谢谢。     

解决方法

        如果要使用默认值,则不在字段中存储任何内容,并使用
{% if %}
模板标签进行检测。     ,        伊格纳西奥的答案很简单,但并不完美。它违反了DRY原理。您必须在所有模板中添加“ 4”语句。我建议在模型上创建一个属性,该属性将为您处理(一次在所有地方)。
class Avatar(models.Model):
    (...)

    @property
    def avatar_image_url(self):
        # Pseudocode:
        if has image:
            return url to the image
        else:
            return url to default image
然后,您可以在模板中执行以下操作:
<img src=\"{{ item.avatar_image_url }}\" alt=\"...\"/>
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...