2017-01-24 22 views
1

インスタンスimagefieldにアップロードされたファイルのファイル名をテンプレートに入れておく必要があります。imagefieldにアップロードされたファイルのファイル名を取得する方法は?

私のクラス:

def conference_directory_path(instance, filename): 
    return 'dialogues/conferences/conference_{0}/avatar/{1}'.format(instance.id, filename) 

class Dialogue(models.Model): 
    ... 
    avatar = models.ImageField(upload_to=conference_directory_path, blank=True) 
    ... 

テンプレート:

<img src="/static/dialogues/conferences/conference_{{ dialogue.id }}/avatar/{{ dialogue.avatar.filename }}" alt=""> 

しかしdialogue.avatar.filenameは、レンダリング後、空の文字列です。どうしましたか?ダイアログはDialogueモデルのインスタンスです。

答えて

0

データベースに格納されているものは実際にはファイル名であり、データではありません。それがここで説明されたアクセス方法:データベースに保存されます

https://docs.djangoproject.com/en/1.10/ref/models/fields/#filefield

すべてが(MEDIA_ROOTからの相対)ファイル へのパスです。 Djangoが提供する便利なURL属性 を使用したいと思うでしょう。たとえば、 ImageFieldがmug_shotと呼ばれている場合は、 イメージへの絶対パスを{{object.mug_shot.url}}のテンプレートで取得できます。

ので、我々は

<img src="{{ dialogue.avatar.url }}" alt=""> 
+0

はどうもありがとうございました持っています! –

+0

助けてくれてうれしい – e4c5

関連する問題