proszę wybaczcie mi za brzydki angielsku ;-)Django: dodawanie obrazu w ImageField z URL obrazu
Wyobraź to bardzo prosty model:
class Photo(models.Model):
image = models.ImageField('Label', upload_to='path/')
chciałbym stworzyć zdjęcie z obrazem URL (tj. Nie ręcznie w witrynie administratora django).
myślę, że muszę zrobić coś takiego:
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)
Mam nadzieję, że ja również wyjaśnić ten problem, jeśli nie mów.
Dziękuję :)
Edit:
To może działać, ale nie wiem jak konwertować content
do pliku 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)
Cześć, dziękuję za pomoc;). Problem polega na tym (cytuję dokument): "Zauważ, że argument content musi być instancją File lub podklasy File." Czy masz jakieś rozwiązanie do tworzenia instancji File z zawartością? –
Sprawdź nową zmianę; powinien to być teraz działający przykład (chociaż tego nie testowałem). – pithyless
Co z moim modelem, gdzie mam inne pola. Jak adres URL, itp., Itp. Jeśli id to model.image.save (...). jak zapisać pozostałe pola? Nie mogą być nieważne EDYCJA: woudl to coś takiego? >>> car.photo.save ('myphoto.jpg', zawartość, save = False) >>> car.save() – Harry