我有一个名为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
如果我打印项目,我得到无法将关键字"总计"解析为字段。选项包括:客户端、client_id、created_on、描述、文档文件、ID、order_id、订购、价格、数量
但是如果我在 .value('price') 时打印项目,我会得到结果。
有没有办法获得总金额的价值
你为什么不试试这个? 即,通过Cart
实例访问 total
方法。
[i.total() for i in Cart.objects.filter(client=request_user, ordered=False)]
您需要创建总函数,该函数将根据客户端过滤的每个对象的价格,或者您可以按如下方式进行正确查询:
total = 0
for i in Cart.objects.filter(client=request_user, ordered=False).all():
#print i.price
total = total+i.price
您不能写values('total')
,因为您的卡模型中没有任何字段作为总计。