В настоящее время у меня есть основной FormWizard, использующий производные формы ModelForm для своих шагов.Когда пользователь закончил, он сохраняет в базу данных.Вместо того, чтобы перенаправлять их обратно в пустой FormWizard, я хотел бы отобразить новый экземпляр FormWizard, начиная с первого шага, но предварительно заполнив определенные поля информацией, которую они вводили в исходной форме.
Ниже приведена базовая функциональность:
class CustomWizardView(SessionWizardView):
file_storage = FileSystemStorage(location=os.path.join(settings.MEDIA_ROOT, 'uploads'))
instance = None
def get_form_instance(self, step):
if not self.instance:
self.instance = Post()
return self.instance
def done(self, form_list, **kwargs):
self.instance.user = self.request.user
self.instance.save()
return HttpResponseRedirect('/session-form')
И вот как я это сделал, прежде чем понял, насколько большой должна быть моя форма, и что для нее требуется FormWizard:
class PostFormView(TemplateView):
template_name = 'form/form.html'
def get(self, request):
form = TestPostForm()
return render(request, self.template_name, {'form': form})
def post(self, request):
form = TestPostForm(request.POST, request.FILES)
building_floor_data = 0
department_data = ''
if form.is_valid():
post = form.save(commit=False)
post.user = request.user
building_floor_data = form.cleaned_data['building_floor']
department_data = form.cleaned_data['department']
post.save()
# return redirect('form')
form = TestPostForm()
form.fields['building_floor'].initial = building_floor_data
form.fields['department'].initial = department_data
return render(request, self.template_name, {'form': form})
Я очень новичок в Django, так что это может быть очень очевидным прыжком.Я просто не понимаю.