У меня ошибка: объект 'NoneType' не имеет атрибута 'price' ошибка при рендеринге шаблона

У меня есть такие модели:

class Product(models.Model):
    name = models.CharField(max_length=200)
    category = models.CharField(max_length=300, choices=TOTAL)
    subcategory = models.CharField(max_length=300, choices=SUBPRODUCT)
    price = models.FloatField()
    image = models.ImageField(null=True, blank=True)

    def __str__(self):
        return self.name

    @property
    def imageURL(self):
        try:
            url = self.image.url
        except:
            url = ''
        return url




class Order(models.Model):
    customer = models.ForeignKey(Customer, on_delete=models.SET_NULL, null=True, blank=True)
    date_ordered = models.DateTimeField(auto_now_add=True)
    complete = models.BooleanField(default=False)
    transaction_id = models.CharField(max_length=100, null=True)

    def __str__(self):
        return str(self.id)
        
    @property
    def shipping(self):
        shipping = False
        orderitems = self.orderitem_set.all()
        for i in orderitems:
            if i.product.digital == False:
                shipping = True
        return shipping

    @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 

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)

    @property
    def get_total(self):
        total = self.product.price * self.quantity
        return total

Мой views.py: def store(request): data = cartData(request)

cartItems = data['cartItems']
order = data['order']
items = data['items']


context = {'cartItems':cartItems, 'order':order, 'items':items}
return render(request, 'store/store.html', context)

Это мой шаблон:

<div class="bottom">
<div class="total">
                                            <span>Total</span>
                                            <span class="total-amount">${{order.get_cart_total|floatformat:2}}</span>
                                        </div>
                                        <a href="{ url 'checkout' }" class="btn animate">Checkout</a>
                                    </div>
                                </div>

Как я упоминал выше, у меня возникла эта ошибка: 'NoneType' object has no attribute 'price' error при рендеринге шаблона. В начале все работало. Я добавил 2 товара, и все заработало. Но, после добавления товаров, он выдает эту ошибку. Я пробовал много раз, но каждый раз получаю эту ошибку. Пожалуйста, помогите

Как предложил Iain Shelvington, почему вы установили OrderItem.prodcut nullable. если вы хотите, чтобы это было как есть, тогда вы можете попробовать следующий код. в модели OrderItem.

@property
def get_total(self):
if self.product and self.quantity: # handling case when either value is Null.
    total = self.product.price * self.quantity
    return total
else:
    return 0
Вернуться на верх