首页 > 解决方案 > Django 'QuerySet' 对象没有属性 'product' 错误

问题描述

我想从药物清单中将药物添加到我的购物车。我创建了一个视图,但是当我单击添加按钮时,它给出了这个错误:

/cart/6/ 'QuerySet' 对象的 AttributeError 没有属性 'product'

我希望当用户单击 + 按钮时,药物将添加用户购物车。这是我的代码。请帮我。

购物车/models.py

class Cart(models.Model):

    user = models.TextField(User)
    product = models.OneToOneField(Medicine,primary_key=True, on_delete=models.CASCADE)
    total = models.DecimalField(max_digits=100, decimal_places=2, default=0.00)
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
    updated = models.DateTimeField(auto_now_add=False, auto_now=True)
    active = models.BooleanField(default=True)

购物车/views.py

def update_cart(request, id):
    current_user = request.user
    cart = Cart.objects.all()

    try:
        medicine = Medicine.objects.get(id=id)
    except Medicine.DoesNotExist:
        pass
    except:
        pass
    cart.product.add(medicine)
    return HttpResponseRedirect("/cart")

药物/模型.py

class Medicine(models.Model):

    medicine_name = models.CharField(max_length=100)
    medicine_info = RichTextField(verbose_name="Details")
    medicine_image = RichTextField(verbose_name="Image")
    medicine_code = models.CharField(max_length=100)
    medicine_qr = models.CharField(max_length=100)
    medicine_price = models.IntegerField()
    slug = models.SlugField(max_length=100, unique=True, editable=False)

medlist.html

 <td> <a href="/cart/{{medicine.id}}" class="btn btn-sq-xs btn-success">
              <i class="fa fa-plus fa-1x"></i><br/>
            </a> </td>

标签: pythondjango

解决方案


你的线

cart = Cart.objects.filter(user=current_user)

返回一个Cart查询集(阅读 上的文档.filter()),但您需要的是一个Cart实例。

为此,您可以使用该方法.get()

cart = Cart.objects.get(user=current_user)

或者.first()

cart = Cart.objects.filter(user=current_user).first()

请注意,您将遇到与该行相同的问题

medicine = Medicine.objects.filter(id=id)

因此您还需要更改此行以获取Medicine实例。


推荐阅读