from django.shortcuts import render from django.forms import modelformset_factory from django.http import HttpResponse from formtools.wizard.views import CookieWizardView from .forms import ProjectForm, VolunteerForm, LibraryForm from .models import Project def intern(request): # return HttpResponse("Hello, world. You're at the input form") # ProjectFormSet = modelformset_factory(Project, fields='__all__') if request.method == 'POST': print('POST detected') form = ProjectForm(request.POST, request.FILES) if form.is_valid(): print('form valid') form.save() # do something. else: print("form not valid") else: print form = ProjectForm() return render(request, 'input/project.html', {'form': form}) def done(request): return HttpResponse("Your data is save now.") def extern(request): return HttpResponse("The world out there is large and dangerous") class ExternView(CookieWizardView): template_name = "input/extern.html" form_list = [VolunteerForm, LibraryForm] def done(self, form_list, **kwargs): print('ExternView.done() reached') # gather data from all forms data = {} for form in form_list: data = {**data, **form.cleaned_data} print(data) # write data to database form = form.save(commit=False) # this is ugly code. how can we copy this without explicit writing? form.realname = data['realname'] form.username = data['username'] form.email = data['email'] form.save() return done(self.request) # return render(self.request, 'saved', { # 'form_data': [form.cleaned_data for form in form_list], # })