我在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")
我想知道如何解决这个问题。谢谢你的帮助。
答案 0 :(得分:3)
您可以使用default templatefilter:
{% with default_image=STATIC_URL|add:"default_image.jpg" %}
{{ user.userprofile.profilpic.url|default:default_image }}
{% endwith %}
答案 1 :(得分:2)
您可以为模型添加方法:
class UserProfile(FacebookProfileModel):
...
profilepic = ...
def profilepic_or_default(self, default_path="/images/..."):
if self.profilepic:
return self.profilepic
return default_path
并在你的tempalte中使用它:
{{ myuser.profilepic_or_default }}