quiero disculparme por mi fea Inglés ;-)Django: agregar la imagen en una imagen de ImageField url
Imagínese este modelo muy simple:
class Photo(models.Model):
image = models.ImageField('Label', upload_to='path/')
Me gustaría crear una foto de una imagen URL (es decir, no a mano en el sitio de administración de django).
creo que tengo que hacer algo como esto:
from myapp.models import Photo
import urllib
img_url = 'http://www.site.com/image.jpg'
img = urllib.urlopen(img_url)
# Here I need to retrieve the image (as the same way that if I put it in an input from admin site)
photo = Photo.objects.create(image=image)
espero que he explicado bien el problema, si no dime.
Gracias :)
Editar:
Esto puede funcionar, pero no sé cómo convertir un archivo content
a Django:
from urlparse import urlparse
import urllib2
from django.core.files import File
photo = Photo()
img_url = 'http://i.ytimg.com/vi/GPpN5YUNDeI/default.jpg'
name = urlparse(img_url).path.split('/')[-1]
content = urllib2.urlopen(img_url).read()
# problem: content must be an instance of File
photo.image.save(name, content, save=True)
Hola, gracias por ayudarme;). El problema es (cito el documento): "Tenga en cuenta que el argumento de contenido debe ser una instancia de File o de una subclase de File". Entonces, ¿tienes alguna solución para crear una instancia de archivo con tu contenido? –
Verifica la nueva edición; esto debería ser ahora un ejemplo de trabajo (aunque no lo he probado) – pithyless
¿Qué pasa con mi modelo, donde también tengo otros campos? Como url, etc., etc. Si id do model.image.save (...). ¿Cómo guardo los otros campos? No pueden ser nulos EDITAR: ¿Será algo como esto? >>> car.photo.save ('myphoto.jpg', contenido, guardar = False) >>> car.save() – Harry