Python Django错误:';订单项';对象没有属性';订单';
我正在尝试修复出现的错误Python Django错误:';订单项';对象没有属性';订单';,python,django,Python,Django,我正在尝试修复出现的错误AttributeError at/update quaty,我试图更新项目中订单摘要页面中与项目相关的数量 我已经指出了与错误显示相关的行 以下是views.py: class OrderSummaryView(LoginRequiredMixin, View): def get(self, *args, **kwargs): try: order = Order.objects.get(user=self.reques
AttributeError at/update quaty
,我试图更新项目中订单摘要页面中与项目相关的数量
我已经指出了与错误显示相关的行
以下是views.py:
class OrderSummaryView(LoginRequiredMixin, View):
def get(self, *args, **kwargs):
try:
order = Order.objects.get(user=self.request.user, ordered=False)
context = {
'object': order
}
return render(self.request, 'order_summary.html', context)
except ObjectDoesNotExist:
messages.warning(self.request, "You do not have an active order")
return redirect("/")
@login_required
def update_qty(request):
if request.method == 'POST':
item_slug = request.POST.get('item_slug', None)
# Check for an order_item
order_item_pk = request.POST.get('order_item', None)
order_item = OrderItem.objects.filter(pk=order_item_pk).first()
if not order_item:
messages.info(request, "Product was not in your cart")
return redirect("product", slug=item_slug)
# Check for an active order
order = Order.objects.filter(user=request.user, ordered=False).first()
if not order:
messages.info(request, "You do not have an active order")
return redirect("product", slug=item_slug)
# Check that order_item is in active order
if not order_item.order == order: <---------------------------------------- Error line
messages.info(request, "Product was not in your cart")
return redirect("product", slug=slug)
# Update quantities
action = request.POST.get('action', None)
if action == "plus":
order_item.quantity += 1
order_item.save()
messages.info(request, "Product quantity was updated.")
elif action == "minus":
order_item.quantity -= 1
if order_item.quantity < 1:
order_item.delete()
messages.info(request, "Product was removed from cart.")
else:
order_item.save()
messages.info(request, "Product quantity was updated.")
return redirect("order-summary")
这是模型
class Item(models.Model):
title = models.CharField(max_length=100)
description = models.TextField()
price = models.FloatField()
slug = models.SlugField(unique=True)
class OrderItem(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE)
ordered = models.BooleanField(default=False)
item = models.ForeignKey(Item, on_delete=models.CASCADE)
quantity = models.IntegerField(default=1)
variation = models.ManyToManyField(Variation)
class Order(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE)
items = models.ManyToManyField(OrderItem)
ordered = models.BooleanField(default=False)
payment = models.ForeignKey(
'Payment', on_delete=models.SET_NULL, blank=True, null=True)
received = models.BooleanField(default=False)
我已经包括了项目、OrderItem和Order的型号您的型号没有Order ForeignKey
class OrderItem(models.Model):
order = models.ForeignKey(Order, on_delete=models.CASCADE) --> doesn't exist
但是可以通过多对多(m2m)关系中的相关名称进行检索,默认情况下,该关系是“classname\u set”->order\u set
if not order_item.order_set.filter(pk=order.pk).exists()
请包括有疑问的型号
OrderItem
和Order
。Thanks@Lewis在问题中添加了型号OrderItem
和Order
,您将在以下顺序中找到items=models.ManyToManyField(OrderItem)
和OrderItemitem=models.ForeignKey(item,on\u delete=models.CASCADE)
应用您返回的代码“OrderItem”对象没有属性“item”
返回的“OrderItem”对象没有属性“filter”
抱歉
class OrderItem(models.Model):
order = models.ForeignKey(Order, on_delete=models.CASCADE) --> doesn't exist
if not order_item.order_set.filter(pk=order.pk).exists()