wob*_*col 8 forms django formview file-upload
我正在尝试在 Django 中实现一个 FormView,因为它似乎减少了一些样板代码。其中一个字段是文件上传字段。
class LibraryUploadLastStageForm(forms.Form):
technician = forms.ModelChoiceField(label="prepeared by" , queryset=Technician.objects.exclude(has_left=True).order_by('name') , required=True)
subprojects = forms.ModelChoiceField(label="Choose a subproject" , queryset=Subproject.objects.all().order_by('subproject_name') , required=True)
lab_tracking_excel = forms.FileField(label="Choose the Lab Tracking Excel - protocol details associated with these libraries", required=False)
Run Code Online (Sandbox Code Playgroud)
在 views.py 中,
class LibraryUploadFinalView(FormView):
template_name = 'sequencing/ChooseSomething.html'
form_class = LibraryUploadLastStageForm
def form_valid(self, form):
"""
Update the library technician, and create the librarysubproject links
"""
id_list_str = self.request.GET.get('ids')
ids = map(int , id_list_str.split(','))
libraries = Library.objects.filter(id__in=ids)
print libraries.count()
cd = form.cleaned_data
lib_kwargs = {}
for library in libraries :
library.technician = cd['technician']
if cd['lab_tracking_excel']:
print cd['lab_tracking_excel']
library.lab_tracking_excel = self.request.FILES
library.save()
LibrarySubprojectStats(subproject=cd['subprojects'],
library=library
).save()
print "updated %s" % library.name
return super(LibraryUploadFinalView, self).form_valid(form)
Run Code Online (Sandbox Code Playgroud)
问题是当我在 FromView form_valid() 方法(我保存详细信息的地方)中时,当我在调试器中检查时 seld.request.FILES 是空的。
更新:我可以看到文件存储在 form.data 下,但是如何从那里获取它到 form.cleaned_data - 这是空的?
| 归档时间: |
|
| 查看次数: |
3659 次 |
| 最近记录: |