2013-03-11 38 views
14

Tôi đang cố gắng lưu tệp hình ảnh qua vỏ django.Lưu hình ảnh/tệp qua django shell

My model.py là:

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

everyhing là tốt với quản trị viên và các hình thức nhưng tôi muốn lưu hình ảnh sử dụng vỏ:

cái gì đó như

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

http://stackoverflow.com/questions/1232434/upload-a-file-from-django-shell – catherine

Trả lời

38
from django.core.files import File 

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

Bạn sẽ kết thúc với hình ảnh abc.png được sao chép vào upload_to thư mục được chỉ định trong ImageField.

Trong trường hợp này, phương pháp user1.pic.save cũng sẽ lưu ví dụ user1. Các tài liệu cho lưu một ImageField có thể được tìm thấy ở đây https://docs.djangoproject.com/en/dev/ref/files/file/

+0

Tôi đã sử dụng phương pháp này cố gắng lưu png và nhận được lỗi này: 'codecs.charmap_decode (đầu vào, tự .errors, decoding_table) [0] odeError: codec 'charmap' không thể giải mã byte 0x8f ở vị trí 207: char thành 'Bạn có biết cách sửa lỗi này không? – AllTradesJack

+0

@AllTradesChỉ sử dụng 'rb' thay vì cờ 'r', vì Roy trả lời dưới đây –

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

Hãy Sử dụng 'rb' thay vì 'r'. Nếu bạn đang sử dụng python3.

+0

Đây phải là nhận xét về câu trả lời gốc. –

Các vấn đề liên quan