2010-01-17 13 views
11

Şablonda bir FileField'in boyutunu ve adını nasıl edinebilirim?Şablonda FileField Boyutu ve Adı

class PDFUpload(models.Model): 
    user = models.ForeignKey(User, editable=False) 
    desc = models.CharField(max_length=255) 
    file = models.FileField(upload_to=upload_pdf) 

Benim şablon böyle kurulduğundan:

Benim modelim böyle kurulduğundan

nasıl dosya adını ve boyutunu görüntüleyebilir

{% 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 göreli yolu, birlikte dosyanın adını

Bir FileField değerine Erişim izni aldıktan sonra

cevap

29

, aşağıdaki yöntemleri vardır tip File değeri, var .

File.size Dosya boyutu bayt cinsinden.

Yani şablonunda yapabilirsiniz:

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

67633152 bayt olarak 64.5 MB görerek karıştırılmamalıdır kimin kullanıcıların olanlar için daha insan tarafından okunabilir boyut (almak için - ben wusses diyoruz), o zaman, 13 KB gibi şeyler içine bayt böyle senin şablonunda kullanmak vb 4.1 MB, 102 bytes, boyutları dönüm için, filesizeformat filtresi ilginizi çekebilir:

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

+1 ancak ister misiniz genişletmek için "FileField" değerine erişim, "File" türünde bir değer var mı? Yukarıdaki gibi "FileField" örneğiyle çalışırken ("download.file" ile) "Kendin yerine" Dosya'nın bir örneğini nasıl buluyorsun? Django ile bu türden pek çok şey görüyorum. Kafa karıştırıcı olabilir. Ve bunun için herhangi bir belgeye işaret edebilirseniz, yardımcı olacaktır. Teşekkürler. –

+0

Muhtemelen bu bağlantı [Django Modeli alan referansı: Alan türleri] (http://docs.djangoproject.com/en/1.2/ref/models/fields/#field-types) model, temel dosyaya erişmek için bir proxy olarak FieldFile örneğidir. " ilgili. Yine de büyülü olduğunu düşünüyorum. –

İlgili konular