user = models.ForeignKey(User, on_delete=models.CASCADE)
В рамках ОРМ работает как надо - удаляется юзер, удаляются и записи в UserConfigs
Но если попытаться удалить запись через CLI:
ОШИБКА: UPDATE или DELETE в таблице "auth_user" нарушает ограничение внешнего ключа "user_confs_user_id_636a9ef2_fk_auth_user_id" таблицы "user_confs"
ПОДРОБНОСТИ: На ключ (id)=(8) всё ещё есть ссылки в таблице "user_confs".
Логический вопрос - почему?
Смотрим в таблицу user_confs модели UserConfigs(models.Model):
"user_confs_user_id_636a9ef2_fk_auth_user_id" FOREIGN KEY (user_id) REFERENCES auth_user(id) DEFERRABLE INITIALLY DEFERRED
WHAT? Для on_delete=models.CASCADE в SQL есть прямой аналог REFERENCES auth_user(id) ON DELETE CASCADE
https://stackoverflow.com/questions/35780443/django-on-delete-models-cascade-has-no-effect-at-sql-level
Обсуждают сегодня