首页 > 解决方案 > /add-to-cart/test-product1 处的 FieldError

问题描述

大家好,我需要帮助,在尝试我的 dd to cart 按钮时,我收到了这条消息。

/add-to-cart/test-product1/ 处的 FieldError 无法将关键字“ordered”解析到字段中。选项有:id、item、item_id、order、quantity

my views.py for the add to cart function.

def add_to_cart(request, slug):
    item = get_object_or_404(Item, slug=slug)
    order_item, created = OrderItem.objects.get_or_create(
        item=item,
        user=request.user,
        ordered=False
    )
    order_qs = Order.objects.filter(user=request.user, ordered=False)
    if order_qs.exists():
        order = order_qs[0]
        # check if the order item is in the order
        if order.items.filter(item__slug=item.slug).exists():
            order_item.quantity += 1
            order_item.save()
        else:
            ordered_date = timezone.now()
            order = Order.objects.create(user=request.user, 
                           ordered_date=ordered_date)
            order.items.add(order_item)
        return redirect("store:product", slug=slug)

我的模型.py

class Order(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL,
                             on_delete=models.CASCADE)
    item = models.ManyToManyField(OrderItem)
    start_date = models.DateTimeField(auto_now_add=True)
    ordered_date = models.DateTimeField()
    ordered = models.BooleanField(default=False)

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

标签: javascriptpythonhtmlcssdjango

解决方案


then include all naming's to your view.py.```

```my views```
```in the views.py in my cart function, I used the order, 
created method whereby i queried my Order Class model from my model.py. 
then I made sure that the object that is being called has also be 
mentioned also in my model class. just like the customer object. 
if the object been called hasn't been mentioned you are must
 likely to get a field error.```

    def cart(request):
        
        if request.user.is_authenticated:
            customer = request.user.customer
            order, created = Order.objects.get_or_create(customer=customer, complete=False)
            items = order.orderitem_set.all()
        else:
            items = []
    
        context = {'items':items}
        return render(request, 'shop/cart.html', context)
    
    class Order(models.Model):
        customer = models.ForeignKey(Customer, on_delete=models.SET_NULL, null=True)
        date_ordered = models.DateTimeField(auto_now_add=True)
        complete = models.BooleanField(default=False, null=True, blank=False)
        transaction_id = models.CharField(max_length=200, null=True)
    
        def __str__(self):
            return str(self.id)

    class OrderItem(models.Model):
        product = models.ForeignKey(Product, on_delete=models.SET_NULL, null=True)
        order = models.ForeignKey(Order, on_delete=models.SET_NULL, null=True)
        quantity = models.IntegerField(default=0, null=True, blank=True)
        date_added = models.DateTimeField(auto_now_add=True)
    
        def __str__(self):
            return str(self.product.id)


推荐阅读