如何在模板中获取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 %}
如何显示文件名和大小?
答案 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 KB
,4.1 MB
,102 bytes
等内容,您可以在模板中使用这些内容,如下所示:
<div class="size">{{download.file.size|filesizeformat}}</div>