Django - 无法将关键字'total'解析为字段

时间:2016-04-27 12:27:04

标签: python django

我有一个名为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')时打印项目,我会得到结果。

有没有办法获得总金额

2 个答案:

答案 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'),因为您的卡片型号中没有任何字段为总数。