[REAL Python – Django] – “Django – 저자 정보 삭제시 정보를 null로 채우기, 포스트에 저자 정보 출력하기”
[REAL Python – Django] – “Django – 저자 정보 삭제시 정보를 null로 채우기, 포스트에 저자 정보 출력하기”
on_delete=models.SET_NULL
설정
author = models.ForeignKey(User, null=True, on_delete=models.SET_NULL)
models.py
의 author
필드 부분을 수정합니다. on_delete=models.SET_NULL
은 DB
에서 작성자가 삭제되면 정보를 null
로 채운다는 뜻입니다. null=True
부분을 왜 사용하지에 대해서는, 아래의 문서에서 답을 찾을 수 있었습니다.
https://django-orm-cookbook-ko.readthedocs.io/en/latest/null_vs_blank.html
null=True
는 필드의 값이 NULL(정보 없음)로 저장되는 것을 허용합니다. 결국 데이터베이스 열에 관한 설정입니다.
실제로 null=True
코드를 작성해주지 않으면 오류가 납니다. null
의 기본 옵션은 False
이기 때문입니다. null=True
를 작성해 주어서 author
필드에 NULL
이 저장되는 것을 허용해 주어야 합니다.
관리자 페이지에서 임의의 사용자를 추가한 다음, 글을 작성한 후 사용자를 삭제해 봅시다. 그러면 작성자 정보가 None
으로 뜨는 것을 확인할 수 있습니다.
템플릿에 저자를 출력하도록 코드 작성
{{ p.author | upper }}
현재 제가 만들고 있는 post.list
템플릿에서는 for
문이 p
로 돌고 있으므로 위의 코드를 작성자를 표시하고 싶은 부분에 추가해 줍니다.
{{ post.author | upper }}
post.detail
템플릿에서는 위의 코드를 작성자를 표시하고 싶은 부분에 추가해주면 되었습니다.
각각 포스트 상세 페이지와 리스트 페이지에서 정상적으로 데이터베이스에 있는 작성자 정보가 출력된 것을 볼 수 있습니다.