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