Django и ImageField Вопрос - PullRequest
       8

Django и ImageField Вопрос

1 голос
/ 18 марта 2010

Foo (модел. Модель): slug = models.SlugField (unique = True) image = models.ImageField (upload_to = 'uploads /')

Я хочу сделать две вещи с этим:

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

image = models.ImageField(upload_to='uploads/', height_field=258, width_field=425)

Во-вторых, при добавлении элемента через панель администратора, я хочу, чтобы имя файла моего изображения было переименовано так же, как slug, если возникнет какая-либо проблема (например, если такое именованное изображение уже существует, добавьте "_" в конец, как оно использовалось сделать. IE: мой слаг - i-love-you-guys, загруженное изображение, в конце которого есть i-love-you-guys.png.

1 Ответ

2 голосов
/ 18 марта 2010

Сигналы являются ответом на оба ваших вопроса.

Как указано в документах, height_field и width_field - это имена полей, в которых следует хранить высоту и ширину исходного изображения, а не принуждать изображение до определенного размера. Я думаю, что лучший способ справиться с тем, что вы хотите сделать, это использовать сигнал pre_save или post_save для изменения размера изображения с помощью PIL. Вы также можете проверить sorl . Фактически, вы можете использовать миниатюру sorl в вашем сигнале для создания нового изображения.

Чтобы переименовать имя файла, также используйте сигнал.

...