我在django中有一个模型,我们称之为product
,它被多个purchase
实例引用。你知道吗
可以为product
的任意数量的项目进行购买,但要受到以下限制:
给定产品的所有采购中的所有项目总数必须小于设置的最大项目数,每个产品的最大项目数定义不同。你知道吗
用户可以为一个产品创建一个purchase
,我想跟踪在任何给定时间所有购买的商品的总数。你知道吗
用户可以修改或删除他们的purchase
,从而改变购买的商品总数,这一事实使情况变得复杂。你知道吗
我如何跟踪每个product
的这个数字,并在每次purchase
更改时更新它?有没有一个钩子可以监听购买的product
并检测到变化?你知道吗
purchase
型号:
class Purchase(models.Model):
items = models.IntegerField(blank=False, default=1)
delivery_method = models.CharField(max_length=100, blank=False, default='')
#...
product = models.ForeignKey('product.Product',
related_name='purchases', on_delete=models.CASCADE)
product
型号:
class Product(models.Model):
name = models.CharField(max_length=100, blank=False,)
items_offered = models.IntegerField(blank=False, default=2)
# Items purchased should be the total number
# of items in all purchases for this product...
# How do I keep it updated?
items_purchased = models.IntegerField(blank=False, default=0)
简单的方法是重写保存、删除方法或使用django signals:
使用
post_save
信号。你知道吗我假设
purchase.items
是Purchase
中product
的数目。你知道吗不过,您可能需要做一些不同的操作,比如聚合产品的所有
Purchase.items
字段,这样就不会每次保存Purchase
实例时都不断更新购买的金额。所以也许可以用这样的方法:相关问题 更多 >
编程相关推荐