微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

| 我想为用户提供认的个人资料图片。我已经在ѭ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=\"...\"/>
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。