2013-10-28 10 views
17

मैं Django के लिए काफी नया हूं और मुझे मॉडलफॉर्म का उपयोग करके छवि अपलोड को संभालने में एक समस्या मिली। मेरे मॉडल का अनुसरण है:Django ModelForm Imagefield अपलोड

class Project(models.Model): 
    name = models.CharField(max_length=100) 
    description = models.CharField(max_length=2000) 
    startDate = models.DateField(auto_now_add=True) 
    photo = models.ImageField(upload_to="projectimg/", null=True, blank=True) 

और modelform निम्नलिखित है:

class AddProjectForm(ModelForm): 
    class Meta: 
     model = Project 
     widgets = { 
      'description': Textarea(attrs={'cols': 80, 'rows': 50}), 
     } 
     fields = ['name', 'description', 'photo'] 

और देखें समारोह है:

def addProject(request, template_name): 
if request.method == 'POST': 
    addprojectform = AddProjectForm(request.POST,request.FILES) 
    print addprojectform 
    if addprojectform.is_valid(): 
     newproject = addprojectform.save(commit=False) 
     print newproject 
     print request.FILES 
     newproject.photo = request.FILES['photo'] 
     newproject.save() 
     print newproject.photo 
else: 
    addprojectform = AddProjectForm() 

newProposalNum = projectProposal.objects.filter(solved=False).count() 
return render(request, template_name, {'addprojectform':addprojectform, 
             'newProposalNum':newProposalNum}) 

टेम्पलेट है:

<form class="bs-example form-horizontal" method="post" action="">{% csrf_token %} 
         <h2>Project Name</h2><br> 
         {{ addprojectform.name }}<br> 
         <h2>Project Description</h2> 
         {{ addprojectform.description }}<br> 
         <h2>Image Upload</h2><br> 
         {{ addprojectform.photo }}<br> 
         <input type="submit" class="btn btn-success" value="Add Project"> 
        </form> 

कोई भी कर सकते हैं कोई मेरी मदद करता है या आप छवि अपलोड करने का उदाहरण दे सकते हैं? धन्यवाद!

+1

क्या आप उल्लेख कर सकते हैं कि आपकी समस्या क्या है ...? – Anto

+0

मेरी समस्या यह है कि छवि निर्देशिका में अपलोड नहीं है। –

+0

हमें अपना टेम्पलेट दिखाएं। – Rohan

उत्तर

40

ठीक है, सभी को धन्यवाद। मैंने खुद को एक बेवकूफ गलती की। मुझे <form> अन्य में जोड़ना चाहिए, यह फ़ाइल अपलोड नहीं करेगा।

+0

पोस्ट के लिए धन्यवाद, मेरे मामले के लिए, यहां तक ​​कि सभी सेट भी आपके साथ enctype के समान हैं, लेकिन शुरुआत में, यह अभी भी छवि/फ़ाइल अपलोड नहीं करता है। मैं वेब पेज को फिर से शुरू करता हूं, और कई बार फिर से चलाता हूं, और आखिरकार, यह काम करता है। आपकी पोस्ट ने मेरी पुष्टि करने में मेरी सहायता की है कि मेरी सेटिंग सही है। धन्यवाद – zhihong

2

आपको newproject.photo से request.FILES['photo'] (वास्तव में यह सही है शायद आपके कोड को तोड़ देगा) सेट करने की आवश्यकता नहीं है। के बजाय addprojectform.save() के साथ बस सहेजें। यहां अधिक जानकारी देखें: https://docs.djangoproject.com/en/1.5/topics/http/file-uploads/#handling-uploaded-files-with-a-model

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