def commande(request): class RequiredFormSet(BaseFormSet): def __init__(self, *args, **kwargs): super(RequiredFormSet, self).__init__(*args, **kwargs) for form in self.forms: form.empty_permitted = False TodoItemFormSet = formset_factory(CommandePizzaForm, max_num=10, formset=RequiredFormSet) if request.method == 'POST': # If the form has been submitted... todo_list_form = CommandeForm( request.POST) # A form bound to the POST data # Create a formset from the submitted data todo_item_formset = TodoItemFormSet(request.POST, request.FILES) if todo_list_form.is_valid() and todo_item_formset.is_valid(): todo_list = todo_list_form.save() for form in todo_item_formset.forms: todo_item = form.save(commit=False) todo_item.list = todo_list todo_item.save() return HttpResponseRedirect( 'thanks') # Redirect to a 'success' page else: print 'error' else: todo_list_form = CommandeForm() todo_item_formset = TodoItemFormSet() # For CSRF protection # See http://docs.djangoproject.com/en/dev/ref/contrib/csrf/ c = { 'todo_list_form': todo_list_form, 'todo_item_formset': todo_item_formset, } c.update(csrf(request)) return render_to_response('commande.html', c)