2010-03-30 29 views
5

Dưới đây là một mô hình django đơn giản:Làm cách nào để cập nhật tên tệp của phiên bản FileField của Django?

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

Tôi muốn lưu bất kỳ trường hợp để tên file 's video sẽ là một tên tập tin hợp lệ của title.

Ví dụ: trong giao diện quản trị, tôi tải một phiên bản mới có tiêu đề "Lorem ipsum" và video có tên "video.avi". Bản sao của tệp trên máy chủ phải là "Lorem Ipsum.avi" (hoặc "Lorem_Ipsum.avi").

Cảm ơn bạn :)

Trả lời

8

Nếu nó chỉ xảy ra trong tiết kiệm, theo docs, bạn có thể vượt qua một chức năng để upload_to mà sẽ được gọi với ví dụ và tên tập tin ban đầu và cần phải trả về một chuỗi được được sử dụng làm tên tệp. Có thể một cái gì đó như:

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 bạn có ý định làm điều đó 'upload_to = video_filename' –

+0

@ T.Stone: ahh yes! cảm ơn –

Các vấn đề liên quan