Django的删除OneToOneField

问题描述 投票:1回答:1

我创建一个Django的web应用程序。我有一个名为vote的应用程序。我想“注册”通过OneToOne,关系这个程序,其他应用程序。例如,我有一篇文章应用程序,我想“注册”投票:

vote = models.OneToOneField(Vote, on_delete=models.CASCADE, default=None, null=True)

我改变了对物品的保存方法:

def save(self, *args, **kwargs):
    self.vote = Vote.objects.create()
    super().save(*args, **kwargs)

这里的问题:我想,当我删除文章的投票被删除,但不起作用。当我删除的文章仅文章将被删除,投票仍然存在。

python django django-models
1个回答
1
投票

这是正确的行为。要删除文章,并希望其选票被删除。所以你应该把你的关系(一对一)的Vote模式,而不是文章。所以更换:

vote = models.OneToOneField(Vote, on_delete=models.CASCADE, default=None, null=True)

至:

article = models.OneToOneField(Article, on_delete=models.CASCADE)

但在投票模式。

需要注意的是:不使用默认的和空对此案。

此外,您还可以阅读Link了解哪里放的关系,以及如何将级联删除它。

© www.soinside.com 2019 - 2024. All rights reserved.