Saving image/file through django shell

Question:

I am trying to save an image file through django shell.

My model.py is:

class user(models.Model):
    name = models.CharField(max_length=20)
    pic = models.ImageField()

Everything is fine with admin and forms but I want to save image using shell:

something like

>>> user1 = User(name='abc', pic="what to write here")

Answers:

from django.core.files import File

user1=User(name='abc')
user1.pic.save('abc.png', File(open('/tmp/pic.png', 'r')))

You will end up with the image abc.png copied into the upload_to directory
specified in the ImageField.

In this case, the user1.pic.save method will also save the user1 instance.
The documentation for saving an ImageField can be found here https://docs.djangoproject.com/en/dev/ref/files/file/

Answered By: edward
from django.core.files import File
user1=User(name='abc')
user1.pic.save('abc.png', File(open('/tmp/pic.png', 'rb')))

Please Use ‘rb’ instead of ‘r’. If you are using python3.

Answered By: Gopal Roy

What worked for me was:

django.core.files.uploadedfile import UploadedFile
user1=User(name='abc')
user1.pic.save('abc.png', UploadedFile(file=open('/tmp/pic.png', 'rb'), content_type='image/png'))
Answered By: Roy Martinez