2013-05-05 7 views
14

के साथ कनेक्ट मैं models.py में है:Django यूआरएल से छवि बचाने के लिए और ImageField

class Item(models.Model): 
    image_file = models.ImageField(upload_to='images') 
    image_url = models.URLField() 

मैं अपने आप django डाउनलोड करना चाहते हैं और स्थानीय स्तर पर image_url और से छवि को बचाने image_file

के साथ "कनेक्ट" यह कैसे यह होना चाहिए कार्य:

  1. मैं 01 में https://docs.djangoproject.com/s/img/site/hdr_logo.gif पेस्ट करें व्यवस्थापक मेंफ़ील्ड
  2. "सहेजें"
  3. टेम्पलेट्स में <img src="{{ item.image_file.url }}"> लिखें।

    मैं Item वर्ग के save विधि ओवरराइट किया है: यह अपने सर्वर से छवि, नहीं djangoproject.com

मैं क्या कोशिश की है पता चलता है। मैं urllib के माध्यम से स्थानीय स्तर पर छवि को बचाया, लेकिन मैं image_file क्षेत्र

उत्तर

32
from django.core.files import File 
import os 

class Item(models.Model): 
    image_file = models.ImageField(upload_to='images') 
    image_url = models.URLField() 

... 

def get_remote_image(self): 
    if self.image_url and not self.image_file: 
     result = urllib.urlretrieve(self.image_url) 
     self.image_file.save(
       os.path.basename(self.image_url), 
       File(open(result[0])) 
       ) 
     self.save() 

आप डिफ़ॉल्ट बचाने() विधि ओवरराइड कर सकते हैं के साथ इस सहेजी गई छवि को जोड़ने के लिए स्वचालित रूप से get_remote_image आह्वान करने के लिए पर अटक कर रहा हूँ()।

देखें: https://docs.djangoproject.com/en/dev/topics/db/models/#overriding-model-methods

+0

कैसे आप छवि का फ़ाइल नाम सेट करूँ? – User

+2

पायथन 3 अपडेट: http://stackoverflow.com/questions/17960942/attributeerror- मॉड्यूल-object-has-no-attribute-urlretrieve – 43Tesseracts

0
python3
from django.core.files import File 
from urllib import request 
import os 

class Item(models.Model): 
    image_file = models.ImageField(upload_to='images') 
    image_url = models.URLField() 

... 

def get_remote_image(self): 
    if self.image_url and not self.image_file: 
     result = request.urlretrieve(self.image_url) 
     self.image_file.save(
       os.path.basename(self.image_url), 
       File(open(result[0])) 
       ) 
     self.save() 
यहां से

लिए

: http://stackoverflow.com/questions/17960942/attributeerror-module-object-has-no-attribute-urlretrieve

संबंधित मुद्दे