2017-05-06 2 views
0

私の質問は、ファイルがロードされていても、フォームがファイルフィールドに対してNo File Chosenを表示するのはなぜですか?Djangoフォームでファイルが選択されていないことが表示される

私は次の形式(FileInputクラスのウィジェットをされ、関連するビット)している:

student = Student.objects.get(user=request.user) 
form = StudentForm(instance=student) 

if request.method == 'POST': 
    form = StudentForm(request.POST, request.FILES, instance=student) 
    if form.is_valid(): 
     form.save() 
     messages.success(request, 'Profile successfully updated.') 
variables['form'] = form 
return render (request, 'app/profile.html', variables) 

そして、私のようなHTMLを通してそれをレンダリングしています:保存する

class StudentForm(forms.ModelForm): 
    class Meta: 
     model = Student 
     exclude = ['id',] 
     widgets = { 
      'user' : forms.HiddenInput(), 
      'first_name' : forms.TextInput(attrs={'class' : 'form-control'}), 
      'last_name' : forms.TextInput(attrs={'class' : 'form-control'}), 
      'email' : forms.EmailInput(attrs={'class' : 'form-control'}), 
      'majors' : forms.TextInput(attrs={'class' : 'form-control'}), 
      'university' : forms.TextInput(attrs={'class' : 'form-control'}), 
      'grad_year' : forms.TextInput(attrs={'class' : 'form-control', 
               'type' : 'number'}), 
      'resume' : forms.FileInput(attrs={'class' : 'form-control'}), 
      'transcript' : forms.FileInput(attrs={'class' : 'form-control'}), 
      'git_link' : forms.URLInput(attrs={'class' : 'form-control'}), 
      'linkedin_link' : forms.URLInput(attrs={'class' : 'form-control'}), 
     } 

マイビュー/の表示がありますこれは:

<form method='post' action="{% url 'add-profile' %}" enctype="multipart/form-data" data-confirm="Please confirm you want to save the current data. This will overright all previous data."> 
    {% csrf_token %} 
    <table class="table"> 
     {{form.as_table}} 
    </table> 
    <button type="submit" class="btn btn-primary" >Update Profile</button> 
</form> 

私の質問は、なぜファイルがファイルフィールドに対して[ファイルが選択されていません]ファイルがロードされたとき(そしてこれをどのように修正すればよいでしょうか?)あなたの助けのための

おかげで(私は好きではありません)

答えて

0

私のソリューションは{{form.field}}とURLフィールドは{{form.field.url}}を含めるために使用することでした。私は標準のボタンを削除し、No File Chosenテキストなしで自分自身を適用するためにCSSフォーマットを適用することができます。

ホリド