Обновление или удаление в таблице "users_user" нарушает ограничение внешнего ключа "articles_article_users_user_id "id=5, все еще ссылающегося на таблицу "articles_arti
Я работаю с Django v4.* и связал 2 таблицы/модели Users
и Articles
, и моя цель - при удалении пользователя я не хочу удалять статью или наоборот, поэтому я сослался на пользователя on_delete=models.DO_NOTHING
в модели Article, но я получаю эту ошибку, когда пытаюсь удалить пользователя, мне кажется, что DO_NOTHING работает не так, как я думал? Как я могу передать это и добиться того, что я хочу сделать, не получая ошибку ограничения? Спасибо
class Article(models.Model):
title = models.CharField(max_length=355)
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING,
related_name='articles')
.....
В большинстве БД вы не можете ссылаться на несуществующий PK. Если вы хотите оставить статью после удаления пользователя, вам нужно сделать что-то вроде этого:
class Article(models.Model):
title = models.CharField(max_length=355)
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, null=True,
related_name='articles')
.....
Таким образом, при удалении пользователя со ссылкой, автор будет установлен в null в БД.