Pass I'd to the view you are you are using,
And then get products thrid that I'd by simple ORM quriy

Product = model name.objects.get(id=id)

On Wed, 23 Jun, 2021, 11:35 PM Parul., <[email protected]> wrote:

> 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/CAHjHRFpf_EfU%3DSSFFTMOeb5JkuNKL%3DuSNVtp782A2r_R-M0_DA%40mail.gmail.com
> <https://groups.google.com/d/msgid/django-users/CAHjHRFpf_EfU%3DSSFFTMOeb5JkuNKL%3DuSNVtp782A2r_R-M0_DA%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>

-- 
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/CAAYXZx-x2ymvZ2sWiLK9RoEdxZJWa8-5po%2BtJqu04z9UB7cqkA%40mail.gmail.com.

Reply via email to