我的模型没有级联删除?
我在下面称为“链接”的模型中有一个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)
答案 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