Я пытаюсь отобразить добавленные товары на своей странице корзины. Но когда я отображаю свою страницу корзины, я получаю ошибку атрибута в / cart/

#python #python-3.x #django #django-views

#python #python-3.x #джанго #django-views #django

Вопрос:

Это часть моего 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)
  

models.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:UsersPCAppDataLocalProgramsPythonPython38-32libsite-packagesdjangoutilsfunctional.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
  

Я не думаю, что у меня даже есть объект «User». Я не знаю, откуда взялась эта ошибка.

Ответ №1:

Пожалуйста, используйте 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)
  

Комментарии:

1. я получаю эту ошибку, FieldError в / cart / Не удается разрешить ключевое слово ‘customer’ в поле. Варианты: complete, costumer, costumer_id, date_ordered, id, orderitem, shippingaddress, transaction_id

2. Я обновил свой ответ. Поэтому попробуйте еще раз. После получения ошибки, пожалуйста, добавьте свою модель Order .