class Album(models.Model): name = models.CharField(_('Name'), max_length=100, blank=False, null=False) user = models.ForeignKey(User, verbose_name=_('User'), null=True, blank=True, related_name='albums') created = models.DateTimeField(_('Created'), auto_now_add=True) def __unicode__(self): return self.name class Image(models.Model): description = models.TextField(verbose_name =_('Description'), blank=True, null=True) image = ImageField(verbose_name = _('File'), upload_to=....) album = models.ForeignKey('Album', verbose_name=_('Album'), null=False, blank=False, related_name='images')
Сам ресайзинг изображений вроде делается не так и сложно, но вот несколько вопросов есть.
1. Где именно (в каком методе) лучше производить ресайзинг?
2. Как лучше организовать поле для указания ширины, до которой будет ресайзиться изображение?
Про второй вопрос поясню. Это поле можно интегрировать в саму модель, тогда форма на основе этой модели будет автоматически его выводить. Другое дело, что хранить поле с шириной в модели вроде не очень логично, т.к. оно будет использоваться только один раз при обработке загруженного изображения и больше не нужно. Если поле ширины задавать не в модели, то видимо его нужно добавлять в форму. У меня тогда вопрос: как и куда в этом случае передавать значение ширины из формы для выполнения ресайзинга?
3. Для фотографий должны создаваться миниатюры, и тут можно пойти двумя путями. Во-первых можно не предусматривать в модели поле для миниатюр, а вместо этого использовать sorl thumbnail в шаблонах при выводе миниатюр на страницах. Но поскольку все миниатюры должны иметь лишь один размер 120х120 и к каждому фото создаются лишь один раз, то можно для превьюшек предусмотреть в модели дополнительное поле
thumb = ImageField(verbose_name = _('Mini'), upload_to=....)
Вот, засыпал вас вопросами,но не пинайте.