2010-12-01 5 views
1

私はフォームを持っている画像フィールドが欠落している、と私は持っている:ジャンゴ:form.is_validチェックした後、cleaned_dataは、フィールドの束と、

profile_image=forms.ImageField(required=False) 

問題がSiことform.is_valid後チェック、例えば

form.cleaned_data.get('first_name') 

は、実際の名前を返すDOES()は、しかし、

form.cleaned_data.get('profile_image') 

はanynthingを返しません。印刷(request.POST)出力で

、私は

u'profile_image': [u'02 Portfolio Page.jpg'] 

が、印刷中の取得(form.cleaned_data)私が手:

'profile_image': None 

ファイルがIS_VALIDで失われているのはなぜチェック?私は何をすべきか?

UPDATE:

class NewChickForm(forms.Form): 
first_name = forms.CharField() 
last_name = forms.CharField() 
profile_image=forms.ImageField(required=False) 
def do_save(self): 
    u = Subject(
     first_name = self.cleaned_data.get('first_name'), 
     last_name = self.cleaned_data.get('last_name'), 
     profile_image = self.cleaned_data.get('profile_image'), 
    ) 
    print(self.cleaned_data) 
    u.save() 
    return u 

s = Subject() 
form = NewChickForm(request.POST) # 1)do i add here `request.FILES` ? 
if form.is_valid(): 
    s = form.do_save() 
      # 2) s.profile_image = form.cleaned_data.get('profile_image')? 

私がない場合でも#1)及び#2)、私はまだNONE

答えて

12

が正しいenctypeを使用していることを確認してくださいません取得あなたのHTMLフォームに:

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

また、フォームオブジェクトを作成するときにrequest.FILESをバインドすることを確認してください。

# Bound form with an image field, data from the request 
>>> f = ContactFormWithMugshot(request.POST, request.FILES) 

Binding uploaded files to a form

編集:File Uploads

+0

あなたは正しかったです。私はマルチパートを持っていませんでした。追加されました。しかし、私は拘束力のあるものをあまりにも多く得ていません。 djangoの説明は、私のコードで行っていることとは非常に異なっているようです。 UPDATEに貼り付けた新しいコードに従って、どのようにしなければならないかについての行を削除できますか?それは本当にすばらしいでしょう – mgPePe

+0

マルチパートデータは 'request.FILES'に置かれるので、そのフィールドを検証するために' is_valid'を#1のフォームにバインドする必要があります。私は 'cleaned_data.get(...) 'を使うのではなく、' request.FILES'から直接ファイルを抽出するので、#2については分かりません。あなたのデータがそこにあるかどうかを確認するために 'request.FILES'を調べましたか? ? –

+0

ここでは、この文書がおそらくより良い説明です:http://docs.djangoproject.com/en/dev/topics/http/file-uploads/?from=olddocs –

関連する問題