Hi ,

I am doing :             product_obj=Product.objects.get(id=product_id)
in the cart_update function in views.py

but when trying to print this object... i am not getting anything... is
this function is not working?


On Wed, Jun 23, 2021 at 11:38 PM Aadil Rashid <[email protected]>
wrote:

> 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
> <https://groups.google.com/d/msgid/django-users/CAAYXZx-x2ymvZ2sWiLK9RoEdxZJWa8-5po%2BtJqu04z9UB7cqkA%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/CAHjHRFpn9RjG6ZJzVs3k4oVie-fp8%2BQ%3D8hqBh-bRxHUBMrCMZA%40mail.gmail.com.

Reply via email to