class Post(models.Model) 안에 가서
author = models.ForeignKey(User, on_delete=models.CASCADE)
를 수정한다.
on_delete=models.CASCADE
는 작성자를 삭제했을 때 이와 연결된 다른 데이터 역시 삭제된다는 뜻이다. 고로 작성자를 삭제하면 해당 사용자가 작성했던 포스트도 삭제된다.
author = models.ForeignKey(User, on_delete=models.SET_NULL)
해당 부분을 위처럼 on_delete=models.SET_NULL
로 바꾸면 사용자를 지워도 포스트는 삭제되지 않고 null로 남는다.
ERRORS:
blog.Post.author: (fields.E320) Field specifies on_delete=SET_NULL, but cannot be null.
HINT: Set null=True argument on the field, or change the on_delete rule.
하지만 이대로 마이그레이션하려하면 위와 같은 에러 메시지가 뜬다.
blog 앱에 있는 Post 모델의 author 필드에 문제가 있고
on_delete=SET_NULL
로 설정한 곳은 null일 수 없다는 힌트까지 주고 있다.
author = models.ForeignKey(User, null=True, on_delete=models.SET_NULL)
작성자 칼럼이 null값이어도 된다는 null=True
를 추가해주고
python manage.py makemigrations
python manage.py migrate
마이그레이션을 하면 정상적으로 반영된다.