我有一个名为Cart的模型,其中包含以下字段
class Cart(models.Model):
client = models.ForeignKey(User, null=True)
description = models.CharField(max_length = 100)
price = models.DecimalField(max_digits=10, decimal_places=2)
quantity = models.PositiveIntegerField()
ordered = models.BooleanField(default=False)
created_on = models.DateTimeField(auto_now_add = True)
def __str__(self):
return self.description
def total(self):
return self.price * self.quantity
我希望在django视图中获得每件商品的总金额。
这是购物车视图
def cart(request): # Client View
request_user = request.user
item = Cart.objects.filter(client=request_user, ordered=False).values('total')
print "item ", item
如果我打印项目,我明白了 无法将关键字“total”解析为字段。选项包括:client,client_id,created_on,description,docfile,id,order_id,ordered,price,quantity
但如果我在.value('price')时打印项目,我会得到结果。
有没有办法获得总金额
答案 0 :(得分:1)
你为什么不尝试这个?即,通过total
实例访问Cart
方法。
[i.total() for i in Cart.objects.filter(client=request_user, ordered=False)]
答案 1 :(得分:0)
您需要创建一个总函数,它将根据客户端过滤每个对象的价格,或者您可以按如下方式查询:
total = 0
for i in Cart.objects.filter(client=request_user, ordered=False).all():
#print i.price
total = total+i.price
您不能写values('total')
,因为您的卡片型号中没有任何字段为总数。