Django при сохранении файла через админку или форму сохраняет название файла. Например, при загрузке картинки "mypic.jpg"
она сохранится с этим названием.
Также, если загружаемый файл на русском языке, то его имя будет сохранено - “моя_картинка.jpg”. Вы можете изменить этот механизм.
ПРИМЕЧАНИЕ. Последующие загружаемые файлы с таким названием будут иметь префикс "_"
, т.е. "_mypic.jpg"
, "__mypic.jpg"
и т.п.
Пример реализации
Этот код должен быть помещен в файл models.py нужного вам приложения.
import os, uuid
def get_file_path(instance, filename):
ext = filename.split('.')[-1]
filename = "%s.%s" % (uuid.uuid4(), ext)
return os.path.join(instance.directory_string_var, filename)
class MyModelFiles(models.Model):
myimage = models.FileField(upload_to = get_file_path)
directory_string_var = 'my-path-to-files-for-this-model'
class MyModelImages(models.Model):
myimage = models.ImageField(upload_to = get_file_path)
directory_string_var = 'my-path-to-images-for-this-model'
Таким образом, при следующей загрузке файла его имя будет выглядеть, например, так «384408e1-5465-46fd-bf47-61f913fa78e5.jpg»
.
Протестировано на версии Django 1.3.