Размер FileField и имя в шаблоне

Как я получаю размер и название 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 %}

Как я могу показать имя файла и размер?

12
задан silent1mezzo 17 January 2010 в 21:08
поделиться

1 ответ

После получения доступа к значению FileField, вы получаете значение типа File, которое имеет следующие методы:

File.name: Имя файла, включающее относительный путь от MEDIA_ROOT.

Размер файла Размер файла в байтах.

Таким образом, вы можете сделать это в вашем шаблоне:

{% 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 МБ в виде 67633152 байт - я называю их слабаками), тогда вас может заинтересовать фильтр filesizeformat для превращения размеров в байтах в такие вещи, как 13 KB, 4. 1 МБ, 102 байта и т.д., которые вы используете в своем шаблоне так:

<div class="size">{{download.file.size|filesizeformat}}</div>
34
ответ дан 2 December 2019 в 04:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: