我创造了商店。我有两个模型:
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语句吗?
答案 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."