[django] 작성자 삭제시 포스팅 유지

haremeat·2021년 11월 30일
0

Django

목록 보기
3/16
post-thumbnail
post-custom-banner

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

마이그레이션을 하면 정상적으로 반영된다.

profile
버그와 함께하는 삶
post-custom-banner

0개의 댓글