Как прикрепить к записи несколько фото?

Всем привет!

Есть модель, нужно чтобы при создании записи пользователь мог прикрепить свои фото!

Я вижу такой вариант (наверное один из самых простых), это добавить дополнительную модель QueryImage, и с помощью inlineformset_factory сделать форму для изображений:

class Query(models.Model):
    # к этой модели нужно прикрепить фото
    # ...

class QueryImage(models.Model):
    query = models.ForeignKey('Query', related_name='images', verbose_name=u'Запрос')
    image = models.ImageField(u'Фото', upload_to='images/%Y/%m/%d')
    comment = models.CharField(u'Комментарии', max_length=200, blank=True)
    updated = models.DateTimeField(u'Изменен', auto_now=True)
    created = models.DateTimeField(u'Создан', auto_now_add=True)


Подскажите как вы реализуете подобную задачу в своих проектах (задача достаточно популярная)?
Может быть используете сторонние приложения?
  • Вопрос задан
  • 1123 просмотра
Пригласить эксперта
Ответы на вопрос 1
@deliro
Вы описали хороший вариант.
Вместо инлайн можно накидать API и слать фотографии AJAXом (т.к., судя по модели, вы не ограничиваете юзера конкретным числом фотографий).
Кстати, юзайте django-imagekit, чтобы пережимать фотографии (вы ведь не знаете, может, юзеру вздумается послать вам bitmap весом 400мб?)
И вместо
image = models.ImageField()
используйте
image = ProcessedImageField(upload_to='your/path', 
                             processors=[ResizeToFit(800, 600)], 
                             format='JPEG', options={'quality': 70})

В данном примере изображение будет вписано в прямоугольник 800х600, сохраняя пропорции. О других опциях догадаться несложно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы