1

我即将创建一个简单的网上商店,目前正在处理我的添加到购物车按钮。

当我现在单击添加到购物车按钮时,它返回如下错误:

FieldError at /add-to-cart/box-1/

Exception Value:    
Cannot resolve keyword 'ordered' into field. Choices are: box, box_id, id, order, quantity, title

相关代码

视图.py:

def add_to_cart(request, slug):
    # Get the item from the slug via get_object_or_404 method
    box = get_object_or_404(Box, slug=slug)
    # Check if the user have an order
    order_box = OrderBox.objects.create(box=box)
    order_qs = OrderBox.objects.filter(user=request.user, ordered=False)

    if order_qs.exists():
        order = order_qs[0]
        # Check if order item is in the order
        if order.box.filter(box__slug=box.slug).exists():
            order_box.quantity += 1
            order_box.save()
    else:
        ordered_date = timezone.now()
        order = Order.objects.create(user=request.user, ordered_date=ordered_date)
        order.items.add(order_box)

    return redirect('webshop:shop-box', slug=slug)

模型.py

class Order(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    items = models.ManyToManyField(OrderBox)
    start_date = models.DateTimeField(auto_now_add=True)
    ordered_date = models.DateTimeField()
    ordered = models.BooleanField(default=False)

    def __str__(self):
        return self.user.username

我一直在寻找,可以找到关于这个主题的不同问题,但是我不明白问题是什么。我非常感谢一些帮助找出我错误的地方,谢谢!

4

1 回答 1

0

看起来OrderBox没有一个名为ordered(或user就此而言)的字段,您的Order模型有。因此,在对您的项目了解不多的情况下,您需要为Order模型创建查询集,而不是通过相关模型OrderBox过滤查询集(如果它们相关,则从错误消息中列出的可用字段中显示)。如果是这种情况,您可以尝试OrderBoxOrderOrderBox.objects.filter(order__user=request.user, order__ordered=False)

于 2020-01-29T13:59:10.167 回答