Я хочу создать приложение, в которое вы можете загружать несколько файлов, где требуется только один - вы обязаны выбрать один файл, но остальные необязательны.
Если я не выбираю все файлы, которые я получаю: MultiValueDictKeyError at / fpFilterRun /
Вначале я использовал Form, теперь я переключился на ModelForm, попытался проверить, являются ли fileFields пустыми или нет, покопался, я думаю, весь стек, и ничего не помогло.
models.py
class FPFilter(models.Model):
QueryName = models.CharField(max_length=25)
DCAfile = models.FileField()
MSAfile = models.FileField(blank=True, null=True)
SSfile = models.FileField(blank=True, null=True)
RSAfile = models.FileField(blank=True, null=True
forms.py
class FPFilterForm(ModelForm):
class Meta:
model = FPFilter
fields = ['QueryName', 'DCAfile', 'MSAfile', 'SSfile', 'RSAfile']
labels = {
'QueryName': 'Query name:',
'DCAfile': 'DCA file:',
'MSAfile': 'MSA file:',
'SSfile': 'Secondary Structure file:',
'RSAfile': 'Relative Solvent Accessibility file:',
}
views.py
def fpFilterRun(request):
if request.method == 'POST':
fpfilter_form = FPFilterForm(request.POST, request.FILES)
if fpfilter_form.is_valid():
query_name = request.POST['QueryName']
DCADict = save_file(request.FILES["DCAfile"], saveDir)
if request.FILES['MSAfile'] is not 'u''':
MSADict = save_file(request.FILES['MSAfile'], saveDir)
MSAPath = MSADict['filePath']
else:
MSAPath = 'empty'
if bool(request.FILES['SSfile']) is False:
SSDict = save_file(request.FILES['SSfile'], saveDir)
SSPath = SSDict['filePath']
else:
SSPath = 'empty'
if request.FILES['RSAfile'] is not None:
RSADict = save_file(request.FILES['RSAfile'], saveDir)
RSAPath = RSADict['filePath']
else:
RSAPath = 'empty'
else:
fpfilter_form = FPFilterForm()
return render(
request,
'comprec/FPFilterInput.html',
{'title': "FP Filter input", 'fpfilter_form': fpfilter_form})
Я хочу, чтобы пользователь всегда загружал DCAfile. Если пользователь хочет, он может также загрузить файлы MSA, SS или RSA.
Мой код полон моих странных попыток заставить его работать - это мои последние изменения, когда каждый логический способ решения этой проблемы не удался ...
Спасибо за всю помощь, которую вы можете оказать мне;)