# The file reference must be populated with a django.core.files.File instance # but File cannot handle file-like objects such as those returned by urlopen - # see http://code.djangoproject.com/ticket/8501 # # Since we'd like to get the normal file name collision avoidance, automatic # location handling, etc. we'll create a django NamedTemporaryFile because the # default file storage save logic is smart enough to simply move the temporary # file to the correct location. from django.core.files import File from django.core.files.temp import NamedTemporaryFile img_temp = NamedTemporaryFile(delete=True) img_temp.write(urllib2.urlopen(url).read()) img_temp.flush() im.file.save(img_filename, File(img_temp))