我有这样的模型
class Product(models.Model):
name = models.CharField(max_length=150)
stock = models.IntegerField()
cogs = models.IntegerField()
def __str__(self):
return f"{self.name}"
class Transaction(models.Model):
customer = models.ForeignKey(User, on_delete=models.CASCADE)
product = models.ManyToManyField(Product)
purchase_date = models.DateField(auto_now_add=True)
quantity = models.IntegerField()
total = models.IntegerField(blank=True)
def save(self, *args, **kwargs):
self.total = self.quantity * self.product.cogs
super().save(self, *args, **kwargs)
def __str__(self):
return f"{self.customer}"
我的问题是如何使产品属性在这种情况下stock
将动态计算时,有交易输入。交易中的每个输入都将扣除product.stock
,即product.stock - transaction.quantity
我尝试自动计算产品。股票时,有输入的交易
1条答案
按热度按时间0mkxixxg1#
你可以使用
@property
装饰器来创建一个计算字段,它将在你每次调用它时执行。Python中的属性和特性之间的区别在于属性只是对象的数据成员,而特性是像属性一样访问的方法,但在调用时实际上执行一些计算。输出:
我相信这比每次在模型上添加、修改或保存任何更改时执行相同的计算要好得多。