def checkout(request, template_name="shop/checkout.html"): cart = get_shopping_cart(request) if cart.items_count() == 0: return redirect('shop_cart') customer = get_customer(request) c_form = CustomerForm(prefix='customer', instance=customer) s_form = AddressForm(prefix='shipping', instance=getattr(customer, 'shipping_address', None)) b_form = AddressForm(prefix='billing', instance=getattr(customer, 'billing_address', None)) if request.method == 'POST': c_form = CustomerForm(request.POST, prefix='customer', instance=customer) commit = True if c_form.is_valid(): customer = c_form.save(commit=False) s_form = AddressForm(request.POST, prefix='shipping', instance=customer.shipping_address) if s_form.is_valid(): customer.shipping_address = s_form.save(commit=False) if customer.same_address: customer.billing_address = customer.shipping_address else: b_form = AddressForm(request.POST, prefix='billing', instance=customer.billing_address) if b_form.is_valid(): customer.billing_address = b_form.save(commit=False) else: commit = False else: commit = False if commit: customer.save() if not cart.customer: cart.customer = customer cart.status = STATUS_CONFIRMED cart.save() return redirect('shop_confirmation') return render_to_response(template_name, { 'cart': cart, 'customerform': c_form, 'shippingform': s_form, 'billingform': b_form, }, context_instance=RequestContext(request))
def post(self, request, **kwargs): form = ProfileForm(request.POST or None,instance=self.us) form1 = AddressForm(data=request.POST,prefix="a",instance=self.add) form2=ReligionForm(data=request.POST,prefix="b",instance=self.rel) a_valid = form.is_valid() b_valid = form1.is_valid() c_valid = form2.is_valid() if a_valid and b_valid and c_valid: return self.form_valid(request,form,form1, form2) else: return self.get(request)