xin vui lòng cho tôi xin lỗi cho tôi xấu xí tiếng anh ;-)Django: thêm hình ảnh trong một ImageField từ url hình ảnh
Hãy tưởng tượng mô hình rất đơn giản này:
class Photo(models.Model):
image = models.ImageField('Label', upload_to='path/')
Tôi muốn tạo ra một hình ảnh từ một hình ảnh URL (ví dụ: không phải bằng tay trong trang web quản trị django).
Tôi nghĩ rằng tôi cần phải làm một cái gì đó như thế này:
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)
Tôi hy vọng rằng tôi đã giải thích tốt các vấn đề, nếu không muốn nói cho tôi biết.
Cảm ơn bạn :)
Edit:
này có thể làm việc nhưng tôi không biết làm thế nào để chuyển đổi content
đến một tập tin 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)
Xin chào, cảm ơn vì đã giúp tôi;). Vấn đề là (tôi trích dẫn tài liệu): "Lưu ý rằng đối số nội dung phải là một phiên bản của Tệp hoặc của một lớp con của Tệp." Vì vậy, bạn có bất kỳ giải pháp để tạo ra tập tin dụ với nội dung của bạn? –
Kiểm tra chỉnh sửa mới; điều này bây giờ sẽ là một ví dụ làm việc (mặc dù tôi đã không thử nghiệm nó) – pithyless
Điều gì về mô hình của tôi, nơi tôi có các lĩnh vực khác là tốt. Giống như url, v.v. Nếu id làm model.image.save (...). làm cách nào để lưu các trường khác? Họ không thể được null EDIT: woudl nó là một cái gì đó như thế này? >>> car.photo.save ('myphoto.jpg', nội dung, lưu = False) >>> car.save() – Harry