Встречается на собеседованиях • сегодня

Что можно написать, когда одна таблица ссылается на другую с помощью on_delete

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

  • CASCADE (по умолчанию) - удалить все связанные объекты
  • PROTECT - запретить удаление, пока есть ссылки
  • SET_NULL - установить NULL (требует null=True)
  • SET_DEFAULT - установить значение по умолчанию
  • SET() - установить конкретное значение
  • DO_NOTHING - ничего не делать (опасно, может вызвать ошибки БД)

Пример:

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

class Book(models.Model):
    author = models.ForeignKey(
        Author, 
        on_delete=models.SET_NULL, 
        null=True, 
        blank=True
    )
    title = models.CharField(max_length=200)

Выбор зависит от бизнес-логики. CASCADE подходит для композиции, PROTECT - для важных связей, SET_NULL - для опциональных связей.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы