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

デフォルトのtemplatefilterを使用できます:

{% 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 に答える