首页 > 解决方案 > 我正在尝试将添加的商品显示到我的购物车页面。但是当我呈现我的购物车页面时,我在 /cart/ 处出现属性错误

问题描述

这是我的 cart.js 文件的一部分

function updateUserOrder(productId, action){
    console.log('User is logged in, sending data..')

    var url = '/update_item/'

    fetch(url, {
        method: 'Post',
        headers:{
            'Content-Type':'application/json',
            'X-CSRFToken':csrftoken, 
        },
        body:JSON.stringify({'productId': productId, 'action':action})
    })

    .then((response)=>{
        return response.json()
    })

    .then((data)=>{
        console.log('data:', data)
    })

}

这是我的“views.py”文件中的一个函数。

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 = []
        order = {'get_cart_total':0, 'get_cart_items':0}
    context={'items': items, 'order':order}
    return render(request, 'store/cart.html', context)

模型.py

class Order(models.Model):
    costumer = models.ForeignKey(Costumer, on_delete=models.SET_NULL, blank=True, 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)
    
    @ property
    def get_cart_total(self):
        orderitems = self.orderitem_set.all()
        total = sum([item.get_total for item in orderitems])
        return total
    
    @ property
    def get_cart_items(self):
        orderitems = self.orderitem_set.all()
        total = sum([item.quantity for item in orderitems])
        return total

我收到此错误。如果有人可以在这里帮助我,我将不胜感激。

File "C:\Users\PC\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\utils\functional.py", line 225, in inner
    return func(self._wrapped, *args)
AttributeError: 'User' object has no attribute 'customer'
[07/Sep/2020 09:15:43] "GET /cart/ HTTP/1.1" 500 70674

我认为我什至没有“用户”对象。我不知道这个错误是从哪里来的。

标签: pythonpython-3.xdjangodjango-views

解决方案


请使用customer =request.user代替 customer = request.user.customer

def cart(request):

    if request.user.is_authenticated:
        costumer = request.user
        order, created = Order.objects.get_or_create(costumer=costumer, complete=False)
        items = order.orderitem_set.all()
    else:
        items = []
        order = {'get_cart_total':0, 'get_cart_items':0}
    context={'items': items, 'order':order}
    return render(request, 'store/cart.html', context)

推荐阅读