def post(self, request, *args, **kwargs): self.object = self.get_object() form_class = self.get_form_class() form = self.get_form(form_class) formset = ContactInfoUpdateFormSet(self.request.POST) if 'add_contact_info' in request.POST: post = request.POST.copy() post['form-TOTAL_FORMS'] = int(post['form-TOTAL_FORMS']) + 1 context = { 'object': self.object, 'form': form, 'formset': ContactInfoUpdateFormSet(post, request.POST) } elif form.is_valid() and formset.is_valid(): form.save() map(lambda x: ContactInfo.objects.filter( id=x.id).update( supplier=self.object ), formset.save(commit=False)) formset.save() return super(SupplierUpdate, self).form_valid(form) else: context = { 'object': self.object, 'form': form, 'formset': formset, 'error_message': process_errors( formset.errors, form.errors ) } return render_to_response( 'core/update.html', context, context_instance=RequestContext(request) )
def post(self, request, *args, **kwargs): form = SupplierForm(request.POST) post = request.POST.copy() context = {} if 'add_contact_info' in request.POST: post['form-TOTAL_FORMS'] = int(post['form-TOTAL_FORMS']) + 1 context = { 'formset': ContactInfoFormSet(post, request.POST) } elif 'remove_contact_info' in request.POST: formset = ContactInfoFormSet(post) data = formset.get_forms_after_delete() context = { 'formset': ContactInfoUpdateFormSet( queryset=ContactInfo.objects.none(), data=data ) } else: formset = ContactInfoFormSet(request.POST) if form.is_valid() and formset.is_valid(): name = form.cleaned_data['name'] remarks = form.cleaned_data['remarks'] supplier = Supplier.objects.create( name=name, remarks=remarks ) for form in formset: ContactInfo.objects.create( supplier=supplier, contact_person=form.cleaned_data['contact_person'], address=form.cleaned_data['address'], telephone=form.cleaned_data['telephone'], mobile=form.cleaned_data['mobile'], fax=form.cleaned_data['fax'], email=form.cleaned_data['email'] ) return HttpResponseRedirect(reverse('index')) else: context = { 'formset': formset, 'error_message': process_errors( formset.errors, form.errors ) } context.update( {'form': form} ) return render_to_response( 'core/create.html', context, context_instance=RequestContext(request) )