Как изменить имя файла загруженного файла в Django?

Действительно ли возможно изменить имя файла загруженного файла в django? Я искал, но не мог найти ответ.

Мое требование - то, каждый раз, когда файл загружается, его имя файла должно быть изменено в следующем формате.

format = userid + transaction_uuid + file_extension

Большое спасибо...

31
задан jww 21 September 2018 в 09:20
поделиться

1 ответ

Как вы загружаете файл? Я полагаю, с помощью 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)
49
ответ дан 27 November 2019 в 22:05
поделиться
Другие вопросы по тегам:

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