Django – how do you turn an InMemoryUploadedFile into an ImageField’s FieldFile

djangodjango-modelsimageupload

I've been trying help(django.db.models.ImageField) and dir(django.db.models.ImageField), looking for how you might create a ImageField object from an image that is uploaded.

request.FILES has the images as InMemoryUploadedFile, but I'm trying to save a model that contains an ImageField, so how do I turn the InMemoryUploadedFile into the ImageField?

How do you go about finding this type of thing out? I suspect that the two classes have an inheritance relationship, but I'd have to do lots of dir() -ing to find out if I were to look.

Best Solution

You need to save the InMemoryUploadedFile to the ImageField rather than 'turning' it into an ImageField:

image = request.FILES['img']
foo.imagefield.save(image.name, image)

where foo is the model instance, and imagefield is the ImageField.

Alternatively, if you are pulling the image out of a form:

image = form.cleaned_data.get('img')
foo.imagefield.save(image.name, image)