Что можно написать, когда одна таблица ссылается на другую с помощью on_delete
Python
Middle
Без компании
Что можно написать, когда одна таблица ссылается на другую с помощью on_delete
Ответы
При определении ForeignKey в Django, параметр `on_delete` указывает, что должно произойти при удалении связанного объекта. Основные варианты:
- `CASCADE` (по умолчанию) - удалить все связанные объекты
- `PROTECT` - запретить удаление, пока есть ссылки
- `SET_NULL` - установить NULL (требует null=True)
- `SET_DEFAULT` - установить значение по умолчанию
- `SET()` - установить конкретное значение
- `DO_NOTHING` - ничего не делать (опасно, может вызвать ошибки БД)
Пример:
```
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` - для опциональных связей.