FileField大小和模板中的名称

时间:2010-01-17 21:08:39

标签: django django-templates django-file-upload

如何在模板中获取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 %}

如何显示文件名和大小?

1 个答案:

答案 0 :(得分:32)

一旦您有权访问FileField的值,就会得到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>