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 <aadil10121...@gmail.com>
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., <parul.281...@gmail.com> 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 django-users+unsubscr...@googlegroups.com.
>> 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 django-users+unsubscr...@googlegroups.com.
> 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 django-users+unsubscr...@googlegroups.com.
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