Как обновить имя файла экземпляра FileField Django?

Здесь простая django модель:

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

Спасибо :)

5
задан user176455 30 March 2010 в 15:45
поделиться

1 ответ

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

Похожие вопросы: