2009-03-25 19 views
42

Eminim ki gerçekten aptalca bir şey yapıyorum, ama şimdi birkaç saatliğine anlamaya çalışıyorum ve hiçbir şey bana atlamıyor.Django Imagefield ModelForm ile düzgün çalışmaz

ModelForm kullanıyorum, bu yüzden düzenleme için bir modelden birkaç alanı gösterebiliyorum. 2x ImageField, 1x TextField. Form işlenir ve TextField çalışır. İki ImageFields çalışmıyor ve neden bugün buradayım.

Modeli: - (ve o kısmı sorunsuz görünen çünkü HTML dahil değilim daha gerekiyorsa isteyin) Ben

İlgili kod İşte Django 1.0.2 kullanıyorum

:

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) 

Görünümü ve biçim:

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'] 

cevap

97

Eh kendimi aptal gibi hissediyorum.

f = AdminEditForm(request.POST, instance = company) 
: Django yüklenen dosyaları işlemek edebilmek için, sen benim durumda

aşağıdaki satırı gider (?! doğru, mantıklı) forma request.FILES değişkeni geçmesi gerekiyor To

:

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

(gelecekte böyle bir şey haline çalıştırırsanız) kontrol etmek başka şey formu çok parçalı olmasıdır. Sizin <form> etiketiniz şu gibi görünmelidir:

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

Teşekkürler! Benim durumumda, 'enctype = "multipart/form-data" bölüm –

+1

arkadaşım aptal burada eksik – Chase

+0

Kaçırmak için şaşırtıcı derecede kolay bir şey. O zamandan beri Crispy'nin form etiketlerimi (diğer şeylerin yanı sıra) ele almasına izin vermeyi buldum. – Oli

İlgili konular