2017-05-06 50 views
0

我的问题是,为什么窗体显示没有文件选择对文件字段,即使当文件加载(以及如何纠正这一点)?Django窗体显示没有文件选择

我有以下形式(相关位被用于FileInput小部件):

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'}), 
     } 

我的观点,以节省/显示的是:

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渲染它这个:

<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}}和网址栏包括{{form.field.url}}。然后,我可以应用CSS格式来删除标准按钮,并在没有选择文件的情况下应用我自己的标准按钮。

Horrid