Sobes.tech
Назад к вопросам
Junior — Middle
52

Каким образом реализовать поведение при удалении записи в таблице, которая связана с другой через on_delete?

Ответ от нейросети

sobes.tech AI

В Django, чтобы задать поведение при удалении записи, связанной с другой через внешний ключ, используется параметр on_delete в поле ForeignKey. Например:

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=100)

Значения on_delete могут быть:

  • models.CASCADE — при удалении родителя удаляются все связанные записи;
  • models.PROTECT — запрещает удаление родителя, если есть связанные записи;
  • models.SET_NULL — при удалении родителя устанавливает поле в NULL (требуется null=True);
  • models.SET_DEFAULT — устанавливает значение по умолчанию;
  • models.DO_NOTHING — ничего не делает, что может привести к ошибкам целостности.

Таким образом, on_delete определяет, что происходит с зависимыми записями при удалении связанной записи.