【发布时间】:2021-01-02 00:44:22
【问题描述】:
我已经完成了与我的问题相关的问题,但没有一个指向我的想法。我有不同的类模型,带有 def 函数。我可以实现每个模型的总量,但我想要实现的是,在得到每个模型的总量之后,我如何将模型加在一起,得到我所有模型的总量。以下是我的代码
class HomeOrderItem(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
home_ordered = models.BooleanField(default=False)
item = models.ForeignKey(HomeItem, on_delete=models.CASCADE)
quantity = models.IntegerField(default=1)
def get_total_item_price(self):
return self.quantity * self.item.home_price
def get_total_discount_price(self):
return self.quantity * self.item.home_discount_price
def get_final_price(self):
if self.item.home_discount_price:
return self.get_total_discount_price()
return self.get_total_item_price()
class HomeOrder(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
home_items = models.ManyToManyField(HomeOrderItem)
date_created = models.DateTimeField(auto_now_add=True)
ordered_created = models.DateTimeField()
home_ordered = models.BooleanField(default=False)
def __str__(self):
return self.user.username
def get_total_everything(self):
total = 0
for order_item in self.home_items.all():
total += order_item.get_final_price()
return total
class MenOrderItem(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
men_ordered = models.BooleanField(default=False)
item = models.ForeignKey(MenItem, on_delete=models.CASCADE)
quantity = models.IntegerField(default=1)
def get_total_item_price(self):
return self.quantity * self.item.men_price
def get_total_discount_price(self):
return self.quantity * self.item.men_discount_price
def get_final_price(self):
if self.item.men_discount_price:
return self.get_total_discount_price()
return self.get_total_item_price()
class MenOrder(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
men_items = models.ManyToManyField(MenOrderItem)
date_created = models.DateTimeField(auto_now_add=True)
ordered_created = models.DateTimeField()
men_ordered = models.BooleanField(default=False)
def __str__(self):
return self.user.username
def get_total_men_everything(self):
total = 0
for order_item in self.men_items.all():
total += order_item.get_final_price()
return total
我希望能够将def get_total_everything() + def get_total_men_everything () 相加得到我的最终金额
【问题讨论】:
标签: python django django-models