Изменить:
Пожалуйста, используйте ответ, выбранный выше - приведенный ниже код работает на вопрос, но не рекомендуется.
Файл изображения, который вы загружаете, находится в:
request.FILES['image'] # assuming input name is called 'image'
Он не возвращает вам объект Image, а скорее объект UploadedFile. Вы можете прочитать эту часть документации (я предполагаю, что вы используете Django 1.3.x): https://docs.djangoproject.com/en/1.3/topics/http/file-uploads/#handling-uploaded-files
Он охватывает поля и методы, доступные в объекте UploadedFile, а также общий способ ручной загрузки файлов. Вы можете использовать тот же метод, чтобы записать файл изображения в файл объекта и затем сохранить его в свой ImageField.
Следующий код должен работать, но это не безопасный код. Я предполагаю, что вы используете * nix машину, если нет, сохраните файл назначения в другом месте.
@csrf_exempt
def saveImage(request):
# warning, code might not be safe
up_file = request.FILES['image']
destination = open('/tmp/' + up_file.name , 'wb+')
for chunk in up_file.chunks():
destination.write(chunk)
destination.close()
img = someImage()
img.image.save(up_file.name, File(open('/tmp/' + up_file.name, 'r')))
img.save()
# return any response you want after this
Другие замечания: убедитесь, что форма имеет следующий атрибут для работы:
<form enctype="multipart/form-data" ... >
Я не помню, чтобы это использование было нормальным, но на самом деле рекомендуется использовать формы.