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)
和OrderItem
item=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()