Форум сайта python.su
0
Пожалуйста, помогите.
Нужно изменять размеры картинки сразу после или во время загрузки.
Получаю ошибку “super(type, obj): obj must be an instance or subtype of type”
def upload(request): if request.method == 'POST': form = PhotoForm(request.POST, request.FILES) if form.is_valid(): print form.errors from django.core.files.uploadedfile import InMemoryUploadedFile image = Image.open(request.FILES['ph_image']) super(Photo, image).thumbnail((200, 200), Image.ANTIALIAS) super(Photo, image).save form.save() return HttpResponseRedirect('/upload/') else: form = PhotoForm() img = Photo.objects.all() title = "Загрузка изображений" return render_to_response("upload.html", {'title': title, 'image_list': img, 'form': form,}, context_instance=RequestContext(request))
Офлайн
2
А зачем super использовать? Я делаю так:
img = request.FILES['photo'] path = settings.MEDIA_ROOT+'photos/' name = hashlib.md5(str(time.time())).hexdigest()[:30]+'.'+re.split('\.',img.name)[1] # у каждой уникальное имя im = Image.open(img) im.thumbnail((200, 200), Image.ANTIALIAS) im.save(path+name)
Отредактировано barabansheg (Ноя. 15, 2012 06:21:10)
Офлайн
568
А разве ImageField не решает подобные задачи автоматически?
Офлайн
2
Офлайн
0
Спасибо.
Умные люди подсказали, что надо переопределять метод save в модели.
Пример тут
Офлайн