16

テンプレート内の FileField のサイズと名前を取得するにはどうすればよいですか?

私のモデルは次のように設定されています:

class PDFUpload(models.Model):
    user = models.ForeignKey(User, editable=False)
    desc = models.CharField(max_length=255)
    file = models.FileField(upload_to=upload_pdf)

私のテンプレートは次のように設定されています:

{% for download in downloads %}
    <div class="download">
        <div class="title"> Name</div>
        <div class="size">64.5 MB</div>
        <div class="desc">{{download.desc}}</div>
    </div>
{% endfor %}

ファイル名とサイズを表示するにはどうすればよいですか?

4

1 に答える 1

46

a の値にアクセスできるようになると、次のメソッドを持つFileFieldtype の値が得られます。File

File.name: MEDIA_ROOT からの相対パスを含むファイル名。

File.size ファイルのサイズ (バイト単位)。

したがって、テンプレートでこれを行うことができます:

{% for download in downloads %}
    <div class="download">
        <div class="title">{{download.file.name}}</div>
        <div class="size">{{download.file.size}} bytes</div>
        <div class="desc">{{download.desc}}</div>
    </div>
{% endfor %}

より人間が読めるファイルサイズを取得するには (64.5 MB を 67633152 バイトと見なすことで混乱するユーザー向け - 私は wusses と呼びます)、filesizeformatバイト単位のサイズを次のようなものに変換するフィルターに 興味があるかもしれません13 KB4.1 MB102 bytesなど、次のようにテンプレートで使用します。

<div class="size">{{download.file.size|filesizeformat}}</div>
于 2010-01-17T21:23:45.693 に答える