Действительно ли возможно изменить имя файла загруженного файла в django? Я искал, но не мог найти ответ.
Мое требование - то, каждый раз, когда файл загружается, его имя файла должно быть изменено в следующем формате.
format = userid + transaction_uuid + file_extension
Большое спасибо...
Как вы загружаете файл?
Я полагаю, с помощью FileField
.
В документации для FileField.upload_to указано, что поле upload_to
,
также может быть вызываемым, например функцией , которая будет вызываться чтобы получить путь загрузки, включая имя файла . Этот вызываемый объект должен иметь возможность принимать два аргумента и возвращать путь в стиле Unix (с косой чертой) для передачи в систему хранения . Два аргумента, которые будут переданы :
" instance ": экземпляр модели, где
FileField
равно {{1 }} определенный. В частности, это конкретный экземпляр, к которому прикрепляется текущий файл ." filename ": имя файла, которое было изначально присвоено файлу. Это может или не может быть принято во внимание при определении пути конечного пункта назначения .
Похоже, вам просто нужно создать функцию, которая будет обрабатывать ваше имя и возвращать путь.
def update_filename(instance, filename):
path = "upload/path/"
format = instance.userid + instance.transaction_uuid + instance.file_extension
return os.path.join(path, format)