怎么在django做数学计算?

时间:2015-05-19 16:26:56

标签: python django django-templates

我创造了商店。我有两个模型:

class Product(models.Model):
    name = models.CharField(verbose_name="name", max_length=40)
    cost = models.FloatField(verbose_name="price")

    def __unicode__(self):
        return self.name

class Shop(models.Model):
    product = models.ManyToManyField(Product)
    name = models.CharField(verbose_name="Nazwa", max_length=40)
    budget = models.FloatField(verbose_name="kwota")

    def __unicode__(self):
        return self.name

我创建了模板,现在我的商店名称和产品价格如下:

http://i.stack.imgur.com/dGimm.png

我怎么算这个价格?例如,在这张图片上,我选择了总数= 17的产品。我应该在视图中创建一些内容,然后将其放入模板中,还是只在模板中编写?

接下来我想比较具有预算的产品总价格来检查哪个更大。我必须创建if语句吗?

2 个答案:

答案 0 :(得分:1)

我会在视图中添加一个返回模板的函数,因为如果你在模板中计算它们,你可能会遇到更复杂的计算问题(这也可能会变得混乱)。

是的,您可以在模板中使用if语句。

答案 1 :(得分:0)

通过@property向您的模型添加一个calculate_prices函数。然后,我将产品M2M更改为FK(如果您希望将其作为M2M,则可以以不同的方式访问产品模型)。然后在函数中执行if语句。然后将shop.calculate_prices添加到您的模板中。像这样:

class Shop(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name="products")
    name = models.CharField(verbose_name="Nazwa", max_length=40)
    budget = models.FloatField(verbose_name="kwota")

    def __unicode__(self):
        return self.name

    @property
    def calculate_prices(self):
        all_costs = self.product.products.all()
        price_list = [x.cost for x in all_costs]
        add_price = sum(price_list)
        if add_price >= self.budget:
            return "You're in danger of overspending my friend"
        elif add_price <= self.budget:
            calc_budget = self.budget - add_price
            return "You are under budget with ${} left over".format(calc_budget) 
        else:    
            return "Cannot Compute, please add in a budget and/or product prices."