Django Удалить OneToOneField - PullRequest
       7

Django Удалить OneToOneField

0 голосов
/ 03 февраля 2019

Я создаю веб-приложение Django.У меня есть приложение с именем vote.Я хочу «зарегистрировать» это приложение через OneToOne-Relationship для других приложений.Например, у меня есть приложение для статьи, и я хочу «зарегистрировать» голосование:

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)

Вот проблема: я хочуголосовать, чтобы удалить, когда я удаляю статью, но это не работает.Когда я удаляю статью, удаляется только статья, и голосование по-прежнему существует.

1 Ответ

0 голосов
/ 03 февраля 2019

Это правильное поведение.Вы хотите удалить статью и хотите, чтобы ее голоса были удалены.поэтому вы должны поместить свое отношение (один к одному) в модель Vote, а не в статью.Поэтому замените:

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

Кому:

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

Но в модели голосования.

Обратите внимание: в этом случае не используйте default и null.

Кроме того, вы можете прочитать эту ссылку , чтобы понять, куда поместить отношение и как его удалит каскад.

...