python - 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>
解决方案
你的线
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
实例。
推荐阅读
- pytorch - 当我将 SparseAttention 与 DeepSpeed 一起使用时遇到运行时错误
- tcp - SDN - TCP 握手
- csrf - CSRF 验证失败。请求已中止
- spring-boot - 如何让 spring boot cloud/actuator 支持 prometheus Exemplars?
- php - 在 lravel 中使用自定义表单请求时请求助手为空?
- sql-server - 将解决方案部署到 Azure SQL Server 数据库后,用户处于非活动/禁用状态并带有红色“X”标记
- typescript - 电子邮件地址格式错误 - Firebase Reauthentication
- reactjs - 使用 useState 解构对象
- unity3d - 当您在游戏过程中进入主屏幕时,会显示徽标
- windows-10 - 在远程计算机上使用 psExec 打开 .NET Framework 或 WPF 程序会导致图形故障