2016-10-21 5 views
0

を削除し、私がアップロードフィールドを持つモデルのフォームを持っている、アップロードされたファイルを表示されないDjangoのモデルの編集フォームとオプション

マイフォーム

class AccountEditForm(forms.ModelForm): 
    telephone = forms.CharField(label=_('Telephone'), required=False,widget=forms.TextInput({'class': 'input-text input-box'})) 
    cv = forms.FileField(required=True,widget=forms.FileInput({'class': 'input-text input-box'})) 
    class Meta: 
     model = Profile 
     fields = ('telephone','cv') 

マイビュー

class AccountEdit(TemplateView): 
    template_name = 'base/account/edit.html' 
    def get(self,request,*args,**kwargs): 
     profile = request.user.profile 
     data = { 
      'form': AccountEditForm(instance=profile) 
     } 
     return render(request,self.template_name,data) 
    def post(self,request,*args,**kwargs): 
     profile = request.user.profile 
     form = AccountEditForm(request.POST,request.FILES,instance=profile) 
     if form.is_valid(): 
      form.save() 
      messages.success(request, _('Successfully updated your account.')) 
      return HttpResponseRedirect(request.META.get('HTTP_REFERER')) 
     data = { 
      'form': form 
     } 
     return render(request,self.template_name,data) 

マイテンプレート

<div class="form-group"> 
    {{ form.telephone.label }} 
    {{ form.telephone }} 
    {% if form.telephone.errors %} 
     {{ form.telephone.as_text }} 
    {% endif %} 
</div> 
<div class="form-group"> 
    {{ form.cv.label }} 
    {{ form.cv }} 
    {% if form.cv.errors %} 
     {{ form.cv.errors.as_text }} 
    {% endif %} 
</div> 

問題は、編集フォームアップロードされたファイルである私は今

回答

を必要とするCVのためのフォームエラーを投げている他のいくつかのフィールドを変更して提出した場合に代わりに表示なっていませんどうしてこの作品が出るのですか?私にはこれを理解させることができます

cv = forms.FileField(required=True) 
+0

フォームに欠落しているenctype = "multipart/form-data"が原因である可能性がありますか? https://docs.djangoproject.com/en/1.10/topics/http/file-uploads/ええとihhcarusが正しいです、私はあなたの代わりにFormViewを使うべきだと思います –

+0

アップロードされたファイルを見ることができませんアップロードされています – overflow

答えて

0

あなたの意見にTemplateViewの代わりにFormViewを追加しましたか?

これは、あなたのために必要なフォームのインスタンス化をすべて処理しますので、getpostの関数で作成、移入、検証する必要はありません。それは確かにあなたのユースケースを扱うのを容易にします。

問題については、get関数のフォームインスタンス化でfilesパラメータを設定することを忘れている可能性があります。 Djangoのドキュメントからこれを見てください。File Upload

get機能では、以下の行を試してみることはできますか?

data = { 
    'form': AccountEditForm(instance=profile, files=request.FILES) 
} 
関連する問題