Как обновить имя файла экземпляра FileField в Django? - PullRequest
5 голосов
/ 30 марта 2010

Вот простая модель Джанго:

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").

Спасибо:)

1 Ответ

8 голосов
/ 30 марта 2010

Если это просто происходит во время сохранения, согласно документам , вы можете передать функцию 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)
...