我创建一个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)
这里的问题:我想,当我删除文章的投票被删除,但不起作用。当我删除的文章仅文章将被删除,投票仍然存在。
这是正确的行为。要删除文章,并希望其选票被删除。所以你应该把你的关系(一对一)的Vote
模式,而不是文章。所以更换:
vote = models.OneToOneField(Vote, on_delete=models.CASCADE, default=None, null=True)
至:
article = models.OneToOneField(Article, on_delete=models.CASCADE)
但在投票模式。
需要注意的是:不使用默认的和空对此案。
此外,您还可以阅读Link了解哪里放的关系,以及如何将级联删除它。