0

我的模型没有级联删除?

我在一个名为“链接”的模型中有一个 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)
4

2 回答 2

3

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

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

于 2013-05-01T10:00:38.610 回答
0

.delete批量删除时不调用方法;as Queryset 生成 sql 语句并直接执行。因此没有调用 ForeignKey 字段的删除。如果你这样做,你可能需要使用pre_delete和/或post_delete信号。

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

于 2013-05-01T09:57:59.087 回答