2013-03-11 16 views
14

Próbuję zapisać plik obrazu za pomocą powłoki django.Zapisywanie obrazu/pliku za pomocą powłoki django

My model.py jest:

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

everyhing jest w porządku z administratora i formach, ale chcę, aby zapisać obraz za pomocą powłoki:

coś

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

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

Odpowiedz

38
from django.core.files import File 

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

Będziesz skończyć z obrazem abc.png skopiowanym do upload_to katalog określony w ImageField.

W tym przypadku metoda user1.pic.save również zapisze instancję user1. Dokumentacja do zapisywania ImageField można znaleźć tutaj https://docs.djangoproject.com/en/dev/ref/files/file/

+0

Użyłem tej metody, próbując zapisać png, i otrzymałem ten błąd: 'codecs.charmap_decode (input, self .errors, decoding_table) [0] odeError: kodek 'charmap' nie może dekodować bajtu 0x8f na pozycji 207: char do 'Czy wiesz jak to naprawić? – AllTradesJack

+0

@AllTradesJack użyje 'rb' zamiast flagi 'r', ponieważ Roy odpowiedział poniżej –

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

Proszę używać „rb” zamiast „R”. Jeśli używasz python3.

+0

To powinno być komentarzem do oryginalnej odpowiedzi. –

Powiązane problemy