Django级联删除选项?

时间:2013-05-01 09:43:07

标签: django django-models

我的模型没有级联删除?

我在下面称为“链接”的模型中有一个FK,删除产品链接时不会被删除。

class Product(models.Model):
    name = models.CharField(max_length=80, blank=True)
    objects = ContentManager()
    #FK
    link = models.ForeignKey(Link, related_name="content", null=True, blank=True)

当我删除产品FK时,为什么?

删除代码:

@login_required
def delete_product(request):
    if request.POST:
        product = get_object_or_404(Product, pk=request.POST['product_id'])
            product.delete()

链接模型:

class Link(models.Model):
    link = models.URLField()
    hits = models.IntegerField(default=0)

2 个答案:

答案 0 :(得分:3)

你的外键是错误的模型,应该在链接模型中。

我怀疑如果您现在删除链接实例,它将删除任何关联的产品

答案 1 :(得分:0)

批量删除时不调用

.delete方法;因为Queryset生成sql语句并直接执行它。因此删除未调用的ForeignKey字段。如果您这样做,则可能需要使用pre_delete和/或post_delete信号。

https://docs.djangoproject.com/en/1.4/topics/db/queries/#topics-db-queries-delete