使用django v2.1计算模型中的价格

时间:2018-01-21 18:59:05

标签: django python-3.x django-models django-2.0

我需要你对这个应用程序的帮助我在这些模型中,我想要在模型Pizza中自动计算顶部的价格和类型,所以当有人记录新数据时,他可以选择类型和顶部以及价格计算并将其保存在该表中。

class Type(models.Model):
 typeName = models.CharField( max_length = 50 )
 priceBase = models.DecimalField( max_digits = 6, decimal_places = 0, default=0 )
 obsBase = models.CharField( max_length = 200, null=True )

 def __str__(self):
    return self.typeName


class Topping(models.Model):
 nameTopping = models.CharField( max_length = 200)      
 priceTopping = models.DecimalField( max_digits = 6, decimal_places = 0, default=0 )
 obsTopping = models.CharField( max_length = 200, null=True )

 def __str__(self):
    return self.nameTopping


class Pizza(models.Model):
 namePizza = models.CharField(max_length=200)
 typePizza = models.ForeignKey(Type, on_delete=models.SET_NULL, null=True )
 toppingPizza = models.ForeignKey(Topping, on_delete=models.SET_NULL, null=True)
 obsPizza = models.CharField(max_length = 200, null=True)

 def __str__(self):
    return self.namePizza

伙计们,我可以使用这种逻辑将我的比萨饼保存在数据库中,这样当有人在网上订购比萨饼时我可以检索计算出的数据吗?我是从右脚开始的吗?对不起我&#39 django的新人,我试图在网上学习一切,你的帮助对我来说将是宝贵的!谢谢你,有一个美好的一天/晚上的家伙!

1 个答案:

答案 0 :(得分:1)

您可以扩展保存功能

class Pizza(models.Model):
    namepizza = models.CharField(max_length=200)
    typepizza = models.ForeignKey(Type, on_delete=models.SET_NULL, null=True)
    toppingpizza = models.ForeignKey(Topping, on_delete=models.SET_NULL, null=True)
    obspizza = models.CharField(max_length=200, null=True)
    pricetotal = models.DecimalField(max_digits=6, decimal_places=0, default=0)

    def save(self, *args, **kwargs):
        self.pricetotal = self.typePizza.priceBase + self.toppingPizza.priceTopping
        super(Pizza, self).save(*args, **kwargs)

    def __str__(self):
        return self.namepizza
在views.py中使用get_or_create()