Настройте путь сохранения для ImageField - PullRequest
0 голосов
/ 07 сентября 2010

Я хочу настроить папки, которые используются для сохранения моих изображений для записи ... в настоящее время у меня есть:

original_image = models.ImageField(upload_to='photos')

Но я хочу, чтобы изображения сохранялись в photos/<vehicle's_stock_number>/ ... как добавить номер запаса в конец пути загрузки?

1 Ответ

1 голос
/ 07 сентября 2010

В соответствии с документацией для FileField.upload_to:

Это также может вызываться, например, функция, которая будет вызываться для получения пути загрузки, включаяимя файла.Этот вызываемый объект должен иметь возможность принимать два аргумента и возвращать путь в стиле Unix (с косой чертой) для передачи в систему хранения.Будут переданы два аргумента:

instance: экземпляр модели, в которой определен FileField.Более конкретно, это конкретный случай, когда текущий файл присоединяется.В большинстве случаев этот объект еще не был сохранен в базе данных, поэтому, если он использует значение по умолчанию AutoField, он может еще не иметь значения для своего поля первичного ключа.

filename:имя файла, который был первоначально передан в файл.Это может или не может быть принято во внимание при определении окончательного пути назначения.

Так что если у вас есть модель с атрибутом stock_number, вы можете использовать что-то вроде этого:

def get_path(instance, filename):
  return 'photos/%s/%s' % (instance.stock_number, filename)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...