На момент выхода версии 1.0 Django, одним из самых значительных изменений стал механизм загрузки (upload) и хранения (storage) файлов. Загрузка файлов без FileField в модели базы данных конечно очень редкий случай, поэтому начнем именно с одного из обязательных параметров FileField — upload_to.
Главная инновация — это гибкая возможность настройки этого самого upload_to
. Раньше можно было только передавать строку
с кодированными strftime параметрами. Тем самым можно было разбивать
загруженные файлы по директориям, создаваемыми по дате, типа uploads/mp3/2008-12/uploaded.mp3
. Сейчас параметром
upload_to
может быть и callable, т.е. к примеру функция, которая должна возвращать полный путь с именем файла, куда
будет сохраняться загруженный файл. Функция должна принимать два параметра: instance
и filename
.