Найти - Пользователи
Полная версия: Работа с model.ImageField
Начало » Django » Работа с model.ImageField
1
wildDAlex
Здравствуйте!
Имеется модель. Хранит данные об изображении в бд.
class Screenshot(models.Model):
image = models.ImageField(upload_to="screens/")

def __unicode__(self):
return self.image.name
Изображения загружаются из админки. Все хорошо, одно беспокоит. Загруженное изображение сохраняется со своим изначальным именем.
Хотелось бы его переименовывать в соответствии с определенным стандартом.
Вопрос в том, можно ли из описания модели повлиять на поведение админки?
Менять что-то в коде админки думаю совсем не элегантно, тем более, что в случае обновления Джанги все затрется.
pill
upload_to может быть callable
Django передаст в нее instance и текущее имя файла, а функция должна возвратить путь в Unix стиле.
соответственно что_то вроде:
class Screenshot(models.Model):
image = models.ImageField(upload_to= lambda inst, fname: '/screens/' + fname + 'blah')
https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.FileField.upload_to
wildDAlex
Спасибо, работает.
wildDAlex
Есть еще вопрос. Получаю из формы загруженное изображение.
class Screenshot(models.Model):
image = models.ImageField(upload_to= lambda inst, fname: 'screens/scr.' + tools.getFileExt(fname))
C этим все ок.
Но хочется еще из полученного изображения получить превью. Т.е. создать копию, обрезать ее и сохранить на диск под другим именем. В идеале ссылку на него тоже сохранить в бд. Все эти манипуляции сам разберусь как сделать. Но не соображу, как получить в модели само изображение и на каком этапе производить манипуляции.
slav0nic
sorl-thumbnail поставь или django-imagekit
wildDAlex
Пробую использовать django-imagekit.
https://github.com/jdriscoll/django-imagekit#readme
Но есть одна непонятка. Он генерит тумбнейлы, только выполняя команду
python manage.py ikflush myapp
Вручную лезть и выполнять ее после добавления каждой картинки как-то не элегантно.
Есть знакомые с пакетом? Можете подсказать, где грабли?
wildDAlex
Разобрался, в модель обязательно требуется добавить дополнительное поле для счетчика просмотра изображений.
Думал в примере в документации оно не имеет значения.
slav0nic
что-то ты не в ту степь разобрался)
я её давно юзал, но по идее p.thumbnail_image.url должно создавать превьюшку, если она ещё не была создана
лучше поиграйся в ./manage.py shell
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB