Hi,
I'm facing an error with the Place Order button not working when the user
is choosing the default address. Kindly help me out in this regard and let
me know if any other files are needed.
Thank you in advance
Regards,
Aritra.

class Address(BaseModel):
    user = models.ForeignKey(User, on_delete=models.SET_NULL,
null=True, blank=True)
    address = models.CharField(max_length=500, null=True)
    phone = models.CharField(max_length=10, null=False)
    city = models.CharField(max_length=100, null=True)
    state = models.CharField(max_length=100, null=True)
    pincode = models.CharField(max_length=100, null=False)
    default = models.BooleanField(default=False, null=True, blank=True)

    def __str__(self):
        return self.user.username

    class Meta:
        verbose_name_plural = 'Addresses'

<div class="row">
     {% if default_address %}
         <div class="custom-control custom-checkbox">
             <input type="checkbox" class="control-input"
name="use_default" id="use_default">
             <label class="control-label" for="use_default">Use
default shipping address: {{ default_address.address|truncatechars:40
}}</label>
         </div>
     {% endif %}
</div>
<div class="clearfix">
     <button type="submit" class="filled-button pull-left">
         <a style="color: #cd9921;" href="{% url 'store:cart-page' %}" >Back</a>
     </button>
     <button type="submit" class="filled-button pull-right">Place Order</button>
</div>

class CheckoutView(View):
    def get(self, *args, **kwargs):
        try:
            order = Cart.objects.get(user=self.request.user, ordered=False)
            form = CheckoutForm()
            context = {
                'form': form,
                'order': order,
            }

            shipping_address_qs = Address.objects.filter(
                user=self.request.user,
                default=True
            )
            if shipping_address_qs.exists():
                context.update(
                    {'default_address': shipping_address_qs[0]})
            return render(self.request, "checkout.html", context)
        except ObjectDoesNotExist:
            messages.info(self.request, "You do not have an active order")
            return redirect(reverse('store:cart-page'))

    def post(self, *args, **kwargs):
        form = CheckoutForm(self.request.POST)
        try:
            order = Cart.objects.get(user=self.request.user, ordered=False)
            if form.is_valid():
                use_default = form.cleaned_data.get(
                    'use_default')
                if use_default:
                    print("Using the default shipping address")
                    address_qs = Address.objects.filter(
                        user=self.request.user,
                        default=True
                    )
                    if address_qs.exists():
                        shipping_address = address_qs[0]
                        order.shipping_address = shipping_address
                        order.save()
                    else:
                        messages.info(self.request, "No default
shipping address available")
                        return redirect('store:cart-page')
                else:
                    address = form.cleaned_data.get('address')
                    pincode = form.cleaned_data.get('zip')
                    phone = form.cleaned_data.get('phone')
                    city = form.cleaned_data.get('city')
                    state = form.cleaned_data.get('state')
                    if form.is_valid():
                        shipping_address = Address(
                            user=self.request.user,
                            address=address,
                            pincode=pincode,
                            state=state,
                            city=city,
                            phone=phone
                        )
                        shipping_address.save()
                        order.shipping_address = shipping_address
                        order.save()

                        set_default = form.cleaned_data.get(
                            'set_default')
                        if set_default:
                            shipping_address.default = True
                            shipping_address.save()

                    else:
                        messages.info(self.request, "Please fill in
the required shipping address fields")
        except ObjectDoesNotExist:
            messages.warning(self.request, "You do not have an active order")
            return redirect(reverse('store:cart-page'))
        return redirect(reverse('store:payment-page'))

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAFecadue4NPnM7K12gr1R8PhCOgk9cX0P0JmOTWD%2BD0UhB%3DaMg%40mail.gmail.com.

Reply via email to