2

我在我的 models.py 中定义了一个带有默认图像的 ImageField。每次我创建一个新用户时,我都可以在管理员中看到默认图像与我想要的用户相关联。

问题是,当我尝试在我的模板中渲染它时,类似于:

{{user.userprofile.profilpic.url}}

这没用。不显示图像。

但是,如果我进入我的管理员并手动更改它,即使使用完全相同的图像,它也可以工作。当我创建用户时,看起来图像没有保存到数据库中。

这是我的models.py:

    class UserProfile(FacebookProfileModel):
       user = models.OneToOneField(User)
       profilpic = models.ImageField(upload_to="profilpics/", default="/my/picture.jpeg")

我想知道如何解决这个问题。感谢您的帮助。

4

2 回答 2

3

您可以使用默认的模板过滤器

{% with default_image=STATIC_URL|add:"default_image.jpg" %}
     {{ user.userprofile.profilpic.url|default:default_image }}
{% endwith %}
于 2012-10-26T16:12:41.970 回答
2

您可以向模型添加方法:

class UserProfile(FacebookProfileModel):
    ... 
    profilepic = ...

    def profilepic_or_default(self, default_path="/images/..."):
        if self.profilepic:
            return self.profilepic
        return default_path

并在你的模板中使用它:

{{ myuser.profilepic_or_default }}
于 2012-10-26T16:15:16.403 回答