Что делают on_delete = models.PROTECT и on_delete = models.CASCADE для моделей Django? - PullRequest
0 голосов
/ 24 мая 2018

Я довольно хорошо знаком с Django, но недавно заметил, что существуют варианты on_delete=models.CASCADE и on_delete=models.PROTECT с моделями,

  • on_delete=models.CASCADE и on_delete=models.PROTECT оба делают одно и то же.
  • Или оба одинаковы (я использовал только on_delete=models.CASCADE, когда я удаляю родительскую запись, она удалит все связанные записи)

    Я искал документацию длято же самое, но не смог найти ничего больше, чем:

Django 2.0

Отношение много-к-одному.Требуются два позиционных аргумента: класс, к которому относится модель, и опция on_delete.Чтобы создать рекурсивное отношение - объект, имеющий отношение «многие-к-одному», - используйте models.ForeignKey ('self', on_delete = models.CASCADE).

1 Ответ

0 голосов
/ 24 мая 2018
  • CASCADE Каскад удаляет.Django эмулирует поведение SQL constraint ON DELETE CASCADE, а также удаляет объект, содержащий ForeignKey.

  • PROTECT Запрет удаления указанного объекта с помощью raising ProtectedError, aподкласс django.db.IntegrityError.

вещи удаляются, потому что, как только вы измените свою модель, вам нужно сделать makemigrations и migrate, чтобы увидеть изменения.

...