Почему эта форма Django жалуется «это поле обязательно для заполнения» для поля изображения? - PullRequest
3 голосов
/ 07 июня 2011

Используя «Фотолог», я могу загружать изображения как часть формы без проблем.В планах тестирования, однако, у меня возникают проблемы с получением изображения для проверки.

В tests.py:

data_photo = {'competition': self.newcomp,  
                  'title': 'Rabbit',
                  'image': open('photocompetitions/static/img/body_bg.jpg'),
                  'flickr_id': '425258',
                  'description': 'A picture of a rabbit',
                  'location': 'POINT (5000 5000)',
                  'location_description': 'Just some random place',
                  'copyright': 'Copyright 2011'}
photoform = PhotoForm(data_photo)

Все работает нормально, кроме поля 'image', которое не отображается как 'Это поле обязательно к заполнению.'сообщение, поэтому я предполагаю, что оно не получено, несмотря на команду open ().поле 'image' - это модель ImageModel, используемая фотологом, и отображается на сайте в виде стандартной формы загрузки.

Ответы [ 3 ]

6 голосов
/ 11 марта 2012

Вы должны передать изображение не в data, а в параметре files формы.

from django.core.files.uploadedfile import SimpleUploadedFile

img = open('photocompetitions/static/img/body_bg.jpg')
uploaded = SimpleUploadedFile(img.name, img.read())
photoform = PhotoForm(data_photo, files={'image': uploaded})
2 голосов
/ 14 сентября 2012

Вам нужно использовать опции 'rb' для открытия файла:

'image': open('photocompetitions/static/img/body_bg.jpg', 'rb')
0 голосов
/ 07 июня 2011

Вы пытались использовать BMP, а не JPG?

Я помню, что есть проблема с тем, как PIL загружается тестовой средой django.

формат jpg в этом случае может быть неправильно включен, но bmp должен быть в порядке.

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...