Выберите имя файла загруженного файла с Django - PullRequest
8 голосов
/ 06 августа 2009

Я загружаю изображения (представленные FileField), и мне нужно переименовать эти файлы, когда они загружены.

Я хочу, чтобы они формировались так:

"%d-%d-%s.%s" % (width, height, md5hash, original_extension)

Я прочитал документацию, но не знаю, нужно ли мне писать свой собственный класс FileSystemStorage или мой собственный класс FileField или ...? Все так взаимосвязано, что я не знаю с чего начать.

Ответы [ 2 ]

19 голосов
/ 06 августа 2009

Вам не нужно писать свой собственный класс FileStorage или что-нибудь более сложное.

Параметр upload_to в File / ImageFields может принимать функцию, которая возвращает путь / файл для использования.

Как это сделать уже ответили здесь

0 голосов
/ 06 августа 2009

Мой первоначальный инстинкт при чтении этого состоял в том, что вам необходимо перегрузить метод save в модели и использовать метод os.rename (), но это вызывает много накладных расходов и, как правило, является хлопотным от начала до конца , Если вы просто хотите переименовать файл, но не хотите вносить в него какие-либо физические изменения (изменение размера, дублирование и т. Д.), То я определенно рекомендую подход, предложенный arcanum выше.

...