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 的值FileField,你就会得到一个 type 的值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 MB,102 bytes等,您在模板中使用如下:

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