Django Model删除外键

时间:2017-04-08 09:24:37

标签: django python-3.x django-models

我有我的模型Config,其中包含一个ForeignKey PeriodicTask。 我希望有一对一的关系,这意味着当我删除ConfigPeriodicTask被删除,反之亦然。

class Config(models.Model):
name = models.CharField(max_length=200, unique=True)
task = models.ForeignKey(PeriodicTask, default=None, null=True, 
                         blank=True, on_delete=models.CASCADE)

使用CASCADE只有我的配置被删除,当PeriodicTask被删除但反之亦然。此外PeriodicTask属于外部模块,因此我无法直接访问它。

如何实现1对1删除关系?

1 个答案:

答案 0 :(得分:0)

这对我有用:

from django.db.models.signals import pre_delete

class Config(models.Model):
  name = models.CharField(max_length=200, unique=True)
  task = models.ForeignKey(PeriodicTask, default=None, null=True, 
                     blank=True, on_delete=models.CASCADE)


def delete_task(sender,instance,using, **kwargs):
     instance.task.delete()


pre_delete.connect(delete_task, sender=Config)

instance是我要删除的Config对象的实例