1

假设我有两个模型:

class Product(models.Model):
    product = model.CharField()
    quantity = model.IntegerField()

class sale(models.Model)
    product = models.ManyToManyField(Product)
    number_sold = model. IntegerField()

进行销售时,我希望更新产品数量。信号是解决此问题的最佳方式吗?

我正在考虑在创建或更新对象时让销售承认 post_save 信号。如果更新,我必须知道旧值和新值才能正确调整数量。产品表必须监听此信号。

我还在考虑让产品表在更新数量后发送自定义信号。如果数量 < 0 项目在延期交货,否则“成功”。

我是 django 和信号的新手,但这是信号的适当用途还是更好的方法?我已经阅读了文档,观看了有关信号的 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)
4

0 回答 0