Django signals Django发出信号更新不同的模型
假设我有两个模型:Django signals Django发出信号更新不同的模型,django-signals,django-1.4,Django Signals,Django 1.4,假设我有两个模型: class Product(models.Model): product = model.CharField() quantity = model.IntegerField() class sale(models.Model) product = models.ManyToManyField(Product) number_sold = model. IntegerField() 销售时,我希望更新产品数量。信号是最好的方法吗 我正在考虑让
class Product(models.Model):
product = model.CharField()
quantity = model.IntegerField()
class sale(models.Model)
product = models.ManyToManyField(Product)
number_sold = model. IntegerField()
销售时,我希望更新产品数量。信号是最好的方法吗
我正在考虑让sale在创建或更新对象时发出post_save信号。如果更新,我必须知道旧值和新值,以便正确调整数量。产品表必须监听此信号
我还考虑让product表在更新数量后发送一个定制信号。如果数量<0的项目在延期订单上,否则成功
我不熟悉django和signals,但这是对signals的适当使用还是它们的更好的方法?我阅读了文档,观看了pycon关于信号的视频,并阅读了一些示例。我还没有看到以这种方式使用的信号,但我想不出任何其他方式来完成这项任务
这就是我最终实现目标的方式,我很想知道这是否是正确的方式。我为模型与下面的代码不匹配而道歉,我简化了我的模型以使其更简单
@receiver(pre_save, sender=Customer_Order_Products)
def update_quantity(sender, **kwargs):
obj = kwargs['instance']
updated_product = Inventory.objects.get(title = obj.product_id)
if not obj.id:
updated_product.quantity -= obj.quantity
else:
updated_product.quantity -= (obj.quantity - Customer_Order_Products.objects.get(id = obj.id).quantity)
Inventory.save(updated_product)