2009-03-25 13 views
42

के माध्यम से ठीक से काम नहीं कर रहा है, मुझे यकीन है कि मैं वास्तव में कुछ बेवकूफ बना रहा हूं, लेकिन मैं इसे कुछ घंटों के लिए समझने की कोशिश कर रहा हूं और कुछ भी मुझ पर कूद नहीं रहा है।Django Imagefield ModelForm

मैं मॉडलफॉर्म का उपयोग कर रहा हूं ताकि मैं संपादन के लिए मॉडल से कुछ फ़ील्ड का पर्दाफाश कर सकूं। 2x ImageField, 1x TextField। फॉर्म संसाधित किया गया है और टेक्स्टफिल्ड काम करता है। दो छविफिल्ड्स काम नहीं करते हैं और इसलिए मैं आज यहां हूं।

मैं Django 1.0.2

यहाँ प्रासंगिक कोड का उपयोग कर रहा है (यदि आप अधिक की जरूरत है पूछना है - और क्योंकि वह हिस्सा ठीक काम करने के लिए प्रकट होता है मैं HTML सहित नहीं कर रहा हूँ):

मॉडल :

class Company(models.Model): 
    #... 
    logo = models.ImageField(upload_to='logos', blank=True) 
    intro_pic = models.ImageField(upload_to='intropics', blank=True) 
    intro_text = models.TextField(blank=True) 

देखें और प्रपत्र:

def admin_edit(request, company_slug): 
    company = get_object_or_404(Company, slug = company_slug) 

    f = AdminEditForm(instance = company) 
    if request.method == 'POST': 
     f = AdminEditForm(request.POST, instance = company) 
     if f.is_valid(): 
      print "Processing form" 
      print f.cleaned_data['intro_pic'] 
      f.save() 

    return render_to_response('uadmin/edit.html', {'company':company, 'f':f}, RequestContext(request)) 


class AdminEditForm(ModelForm): 
    class Meta: 
     model = Company 
     fields = ['logo', 'intro_pic', 'intro_text'] 

उत्तर

97

खैर मैं एक बेवकूफ की तरह लग रहा है। आदेश Django अपलोड की गई फ़ाइलों को प्रोसेस करने में सक्षम होने के लिए के लिए है, तो आप फार्म के लिए request.FILES चर पारित करने के लिए की जरूरत है (समझ में आता है, है ना ?!)

मेरे मामले में निम्न पंक्ति से चला जाता है:

f = AdminEditForm(request.POST, instance = company) 

करने के लिए:

f = AdminEditForm(request.POST, request.FILES, instance = company) 

एक और बात की जांच करने के (यदि आप भविष्य में कुछ इस तरह में चलाने) है कि आपके प्रपत्र बहुखण्डीय है। आपका <form> टैग इस तरह कुछ दिखना चाहिए:

<form enctype="multipart/form-data" method="post" action=""> 
+0

धन्यवाद! मेरे मामले में मैं 'enctype = "multipart/form-data" 'part –

+1

साथी बेवकूफ – Chase

+0

याद कर रहा था यह याद करने के लिए एक आश्चर्यजनक आसान बात है। मैंने तब से क्रिस्टी को मेरे फॉर्म टैग (साथ ही साथ अन्य चीजों) को संभालने में मदद की है। – Oli

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