---------- Forwarded message ---------
From: Parul. <[email protected]>
Date: Wed, Jun 23, 2021, 11:34 PM
Subject: Error while creating an ecommerce website :PLEASE HELP!
To: <[email protected]>
Hi,
I am working on an ecommerce website. I am facing an error. Can anyone
please help me solve this error.
I am not able to fetch the PRODUCT_ID
1. views.py (APP-CART)
-------------------------------------------------------------------------------------------------------
from django.shortcuts import render,redirect
from .models import Cart
from new_app.models import Product
# Create your views here.
def cart_home(request):
cart_obj,new_obj=Cart.objects.new_or_get(request)
products=Cart.objects.all()
return render(request,'carts/home.html',{})
def cart_update(request):
print(request.POST)
# print(dict(request.POST.items()))
# print("in func")
product_id=1
print('id below')
print(product_id) // not able to get the value of product id in
console
product_obj=Product.objects.get(id=product_id)
cart_obj,new_obj=Cart.objects.new_or_get(request)
if product_obj in cart_obj.products.all():
cart_obj.products.remove(product_obj)
else:
cart_obj.products.add(product_obj)
return redirect('home')
--------------------------------------------------------------------------------------------
2. models.py (cart)
from django.db import models
from django.conf import settings
from new_app.models import Product
from django.db.models.signals import pre_save,post_save,m2m_changed
User=settings.AUTH_USER_MODEL
class CartManager(models.Manager):
def new_or_get(self,request):
cart_id=request.session.get("cart_id",None)
# qs=self.get_queryset().filter(id=cart_id)
qs=self.get_queryset().only('products')
print(qs)
if qs.count()==1:
new_obj=False
cart_obj=qs.first()
print('cart obj below')
print(cart_obj)
if request.user.is_authenticated and cart_obj.user is None:
cart_obj.user=request.user
cart_obj.save()
else:
cart_obj=Cart.objects.new_cart(user=request.user)
new_obj=True
request.session['cart_id']=cart_obj.id
return cart_obj,new_obj
def new_cart(self,user=None):
user_obj=None
if user is not None:
if user.is_authenticated:
user_obj=user
return self.model.objects.create(user=user_obj)
class Cart(models.Model):
user=models.ForeignKey(User,null=True,blank=True,on_delete=models.CASCADE)
products=models.ManyToManyField(Product,blank=True)
subtotal=models.DecimalField(default=0.00,max_digits=100,decimal_places=2)
total=models.DecimalField(default=0.00,max_digits=100,decimal_places=2)
timestamp=models.DateTimeField(auto_now_add=True)
updated=models.DateTimeField(auto_now=True)
objects=CartManager()
def __str__(self):
return str(self.id)
def m2m_changed_cart_receiver(sender,instance,action,*args,**kwargs):
print(action)
if action=='post_add' or action=='post_remove' or action=='clear':
products=instance.products.all()
total=0
for x in products:
total += x.price
if instance.subtotal != total:
instance.subtotal=total
instance.save()
m2m_changed.connect(m2m_changed_cart_receiver,sender=Cart.products.through)
def pre_save_cart_receiver(sender,instance,*args,**kwargs):
if instance.subtotal>0:
instance.total=instance.subtotal + 10
else:
instance.total=0.00
pre_save.connect(pre_save_cart_receiver,sender=Cart)
OUTPUT IN CONSOLE:
<QueryDict: {'csrfmiddlewaretoken':
['FMk2gTq6XXxZ2HU40I6h4b3WtPl59Drf1urwUNufDZUeSFPMzGNwU4L1QuGCiCbB'],
'product_id':
['']}> -------- GETTING EMPTY DICTIONARY INSTEAD OF GETTING PRODUCT
ID i.e. 1
id below
1
<QuerySet [<Cart: 13>]>
So, I am unable to fetch the productc id there besides the csrf....
i tried to individually print the product id.. which came as 1...(written
under"id below" in output)
Can anyone pls help me with this.
Also, adding update_cart.html
<form method='POST' action='{% url 'update' %}'class="form ">{% csrf_token
%}
<input type="hidden" name='product_id' vallue= "{{ product_id }}">
{% if product in cart.products.all %}
<button type="submit" class="btn btn-link">remove</button>
{% else %}
<button type="submit" class="btn btn-success">add to cart</button>
{% endif %}
</form>
--
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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/CAHjHRFqpGEcZj6-Enq_uwZJRbKZRVwJEti9BfKBwg%2Bv%3Dkr4kjA%40mail.gmail.com.