我正在开发一个电子商务网站,只有登录的用户才能下订单。我想在结帐时获得所有订单的总价,以下是模型和视图,如果有人可以提供帮助,我将不胜感激
class Product(models.Model): supplier = models.ForeignKey(Shop, on_delete=models.CASCADE) product_name = models.CharField(max_length=100, null=True, blank=True) brand_name = models.CharField(max_length=100, null=True, blank=True) image = models.FileField(upload_to='meadia/product-image', null=True) key_features = models.TextField(max_length=1000, null=True, blank=True) specifications = models.TextField(max_length=1000, null=True, blank=True) description = models.TextField(max_length=1000, null=True, blank=True) creation_date = models.DateTimeField(auto_now_add=True) def __str__(self): return self.product_name class Order(models.Model): user = models.ForeignKey(CustomUser, on_delete=models.DO_NOTHING) product = models.ForeignKey(Product, on_delete=models.DO_NOTHING) quantity = models.IntegerField(default=1, null=True, blank=True) order_date = models.DateTimeField(auto_now_add=True) paid = models.BooleanField(default=False) shipped = models.BooleanField(default=False) ready_for_delivery = models.BooleanField(default=False) delivered = models.BooleanField(default=False) def order_price_total(self): if self.paid == False: total_price = self.product.current_price * self.quantity return (total_price) def __str__(self): return self.product.product_name ##VIEW @login_required(login_url='login') def orders(request): order = Order.objects.filter(user=request.user) total_amount = Order.objects.filter(user=request.user, paid=False, delivered=False).aggregate(TOTAL = Sum('order_price_total'))['TOTAL'] or 0 context={ 'order':order, 'total_amount':total_amount, } return render(request, 'mainapp/cart.html', context)
我尝试获取 order_price_total 的总和,但出现错误,
如果有人可以帮忙,我将不胜感激
Cannot resolve keyword 'order_price_total' into field. Choices are: delivered, id, order_date, paid, product, product_id, quantity, ready_for_delivery, shipped, user, user_id
使用属性标签
如下
class Order(models.Model):
user = models.ForeignKey(CustomUser, on_delete=models.DO_NOTHING)
product = models.ForeignKey(Product, on_delete=models.DO_NOTHING)
quantity = models.IntegerField(default=1, null=True, blank=True)
order_date = models.DateTimeField(auto_now_add=True)
paid = models.BooleanField(default=False)
shipped = models.BooleanField(default=False)
ready_for_delivery = models.BooleanField(default=False)
delivered = models.BooleanField(default=False)
@property
def order_price_total(self):
if self.paid == False:
total_price = self.product.current_price * self.quantity
return (total_price)
def __str__(self):
return self.product.product_name
在模板中您可以使用 order.order_price_total