我想在删除品牌时阻止删除产品。这是我的代码:
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)
知道为什么它不起作用吗?
答案 0 :(得分:1)
检查是否有任何模型将Product
模型间接链接到Brand
。
顺便说一下,指定on_delete
参数是防止删除引用对象的更简单方法。
例如:
class Product(models.Model):
brand = models.ForeignKey(Brand, blank=True, null=True, on_delete=models.SET_NULL)