信号中的代码未被执行

时间:2014-02-17 04:34:12

标签: python django

我想在删除品牌时阻止删除产品。这是我的代码:

from django.db.models.signals import pre_delete
from shop.models import Brand, Product


def before_deleting_brand(sender, instance, **kwargs):
    """
    Detach products from the brand upon brand deletion
    """

    Product.objects.filter(brand=instance).update(brand=None) <<< LINE HAS NO EFFECT


pre_delete.connect(before_deleting_brand, sender=Brand)

知道为什么它不起作用吗?

1 个答案:

答案 0 :(得分:1)

检查是否有任何模型将Product模型间接链接到Brand

顺便说一下,指定on_delete参数是防止删除引用对象的更简单方法。

例如:

class Product(models.Model):
    brand = models.ForeignKey(Brand, blank=True, null=True, on_delete=models.SET_NULL)