2009-03-25 5 views
42

저는 정말 분명히 바보 같은 일을하고 있다고 확신합니다.하지만 지금은 몇 시간 동안 알아 내려고 노력하고 있습니다. 아무 것도 나에게 뛰어 오지 않습니다.Django Imagefield가 ModelForm을 통해 제대로 작동하지 않습니다.

ModelForm을 사용하고 있으므로 모델의 일부 필드를 편집 할 수 있습니다. 2x ImageField, 1x TextField. 양식이 처리되고 TextField가 작동합니다. 두 개의 ImageField가 작동하지 않아 그 이유가 오늘 여기 있습니다.

모델 : - (그 부분은 잘 작동하는 것처럼 보이기 때문에 내가 HTML을 포함하고 있지 않다 당신이 더 필요하면 질문) 나는

여기에 관련 코드의 장고 1.0.2을 사용하고

:

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

그럼 내가 바보 같은 느낌.

f = AdminEditForm(request.POST, instance = company) 
: 장고 업로드 된 파일을 처리 할 수있게하기 위해서는, 당신은 내 경우

다음 줄은 간다 (?! 오른쪽 의미가 있습니다) 폼에 request.FILES 변수를 전달해야 으로

:

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

(앞으로 이런 일에 실행하는 경우)를 확인하는 또 다른 것은 양식이 다중 점이다. <form> 태그는 다음과 같이 표시되어야합니다.

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

감사합니다. 제 경우 엔'enctype = "multipart/form-data"부분이 누락되었습니다 –

+1

동료 바보 – Chase

+0

놀랍게도 놓치기 쉽습니다. 이후로 Crispy가 내 양식 태그 (다른 것들)를 처리하도록 도와주었습니다. – Oli

관련 문제