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

伙计们,我可以使用这个逻辑将我的比萨饼保存在数据库中,这样当有人在线订购比萨饼时,我可以检索计算出的数据?,我是从右脚开始的?对不起,我是 django 的新手,并且我正在努力学习网络上的所有内容,您的帮助对我来说将是宝贵的!谢谢你们,祝你们白天/晚上愉快!

4

1 回答 1

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()

于 2018-01-21T20:38:10.020 回答