2010-01-17 2 views
11

템플릿의 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 %} 
?

File.name : MEDIA_ROOT에서 상대 경로를 포함한 파일의 이름

당신이 FileField의 값에 접근했으면

답변

29

, 당신은 다음의 메소드가 유형 File의 값을 가지고 .

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 %} 

은 67,633,152 바이트로 64.5 MB를보고 혼동 될 수있는 사용자의 사람들을 위해 더 많은 사람이 읽을 수있는 파일 크기를 (얻으려면 - 나는 wusses 그들에게 전화), 당신은, 13 KB 같은 일에 바이트이 같은 템플릿에서 사용하는 등 4.1 MB, 102 bytes, 크기를 돌려 들어, filesizeformat 필터에 관심이있을 수 있습니다

<div class="size">{{download.file.size|filesizeformat}}</div> 
+0

일을하지만 상관 것 확장하자 "일단 g 'FileField'의 값에 접근하면,'File' 타입의 값을 가지게됩니까? 위와 같이'FileField'의 인스턴스 ('download.file')로 작업 할 때, 어떻게 마술처럼'File'의 인스턴스로 자신을 찾으십니까? 장고와 함께 이런 종류의 것들을 꽤 많이 보았습니다. 혼란 스러울 수 있습니다. 그리고 이것에 대한 문서를 지적 할 수 있다면 도움이 될 것입니다. 감사. –

+0

아마도이 링크 [Django Model field reference : Field types] (http://docs.djangoproject.com/en/1.2/ref/models/fields/#field-types)에서 "당신이 FileField에 접근하면 모델을 사용하면 기본 파일에 액세스하기위한 프록시로 FieldFile의 인스턴스가 제공됩니다. " 관련성이 있습니다. 나는 여전히 그것이 마법이라고 생각한다. –

관련 문제