#python #django
#python #django
Вопрос:
У меня есть типичный models.ModelForm
файл с одним полем: a FileField
. Однако, когда пользователь загружает файл с помощью формы и страница перезагружается, файл не отображается в списке. Пользователь должен перезагрузить страницу вручную, чтобы она отображалась как «текущий файл».
Это мой код просмотра:
submission = Submission.objects.filter(user=request.user, problem=problem).first()
if request.POST:
submission_form = SubmissionForm(request.POST, request.FILES, instance=submission)
if submission_form.is_valid():
submission_form.save()
else:
submission_form = SubmissionForm(instance=submission)
return render_to_response('view-problem.html',
dictionary={'problem': problem, 'submission_form': submission_form},
context_instance=RequestContext(request))
Я предполагаю, что файл все еще обрабатывается во время загрузки представления, поэтому пользователь не сразу его видит. Как мне это исправить?
Ответ №1:
Вы должны создать новую форму после сохранения старой формы. ModelForm.save()
возвращает экземпляр модели, вы можете использовать этот экземпляр для инициализации новой формы модели.
Код:
if request.POST:
submission_form = SubmissionForm(request.POST, request.FILES, instance=submission)
if submission_form.is_valid():
submission = submission_form.save()
submission_form = SubmissionForm(instance=submission)