自動化無しに生活無し

WEBとかAIとかLinux関係をひたすら書く備忘録系ブログ

【Django】FilefieldやImageFieldでファイル名だけを表示させる方法【モデルにメソッドを追加】

thumbnail

FilefieldやImageFieldにはフィールドオプションとしてupload_toが指定されている。

そのため、そのままではファイル名だけを取り出すことはできない。

例えば、モデルが下記でファイル名がtest.pdfだった場合。

class Document(models.Model):
    file    = models.FileField(verbose_name="ファイル",upload_to="app/document/file/")

出力されるのはapp/document/file/test.pdfとなる。

test.pdfを表示させたいのであれば、別途対策が必要である。

モデルクラスにメソッドを追加する。

import os

class Document(models.Model):
    file    = models.FileField(verbose_name="ファイル",upload_to="app/document/file/")

    def file_name(self):
        return os.path.basename(self.file.name)

これでファイル名単体を表示させたい時、このfile_nameメソッドを呼び出せば良い。

テンプレートで下記のように表示させる

{{ document.file_name }}

これでtest.pdfと表示される。

参照:https://stackoverflow.com/questions/2683621/django-filefield-how-to-return-filename-only-in-template

スポンサーリンク

シェアボタン

Twitter LINEで送る Facebook はてなブログ