Sobes.tech
Back to questions
Junior — Middle
53

В чем заключается назначение параметра on_delete в моделях базы данных?

Answer from AI

sobes.tech AI

Параметр on_delete в моделях базы данных, например в Django ORM, определяет поведение при удалении связанного объекта. Он указывает, что должно произойти с объектами, которые ссылаются на удаляемый объект через внешние ключи.

Основные варианты on_delete:

  • CASCADE: при удалении родительского объекта удаляются все связанные дочерние объекты.
  • PROTECT: запрещает удаление родительского объекта, если есть связанные дочерние.
  • SET_NULL: устанавливает значение внешнего ключа в NULL у связанных объектов.
  • SET_DEFAULT: устанавливает значение по умолчанию у связанных объектов.
  • DO_NOTHING: не предпринимает никаких действий, что может привести к ошибкам целостности данных.

Пример:

from django.db import models

class Author(models.Model):
    name = models.CharField(max_length=100)

class Book(models.Model):
    author = models.ForeignKey(Author, on_delete=models.CASCADE)
    title = models.CharField(max_length=200)

Здесь, если автор удаляется, все книги этого автора тоже будут удалены благодаря on_delete=models.CASCADE.