未执行信号中的代码

2024-06-17 11:05:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我想防止删除品牌时删除产品。这是我的密码:

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)

你知道为什么没用吗


Tags: instancefromimport密码产品modelsproductdelete
1条回答
网友
1楼 · 发布于 2024-06-17 11:05:18

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

顺便说一句,指定^{}参数更容易防止删除引用对象

例如:

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

相关问题 更多 >