2010-03-30 60 views
5

這裏一個簡單的Django模型:如何更新Django的FileField實例的文件名?

class SomeModel(models.Model): 
    title = models.CharField(max_length=100) 
    video = models.FileField(upload_to='video') 

我想保存的任何實例,以便video的文件名會是title的一個有效的文件名。

例如,在管理界面中,我加載了一個標題爲「Lorem ipsum」的新實例和一個名爲「video.avi」的視頻。該服務器上的文件的副本應該是「Lorem Ipsum.avi」(或「Lorem_Ipsum.avi」)。

謝謝:)

回答

8

如果保存過程中恰好,按照該docs,你可以通過一個函數來upload_to將調用與實例和原來的文件名,需要返回一個字符串是用作文件名。也許是這樣的:

from django.template.defaultfilters import slugify 
class SomeModel(models.Model): 
    title = models.CharField(max_length=100) 
    def video_filename(instance, filename): 
     fname, dot, extension = filename.rpartition('.') 
     slug = slugify(instance.title) 
     return '%s.%s' % (slug, extension) 
    video = models.FileField(upload_to=video_filename) 
+1

@rz你是不是要讓那個'upload_to = video_filename' – 2010-03-30 21:12:02

+0

@ T.Stone:啊是的!謝謝 – 2010-03-30 23:28:19

相關問題