모델 설계
- 블로그 글에 댓글을 단다는 것은 데이터베이스에 데이터를 저장하는 일입니다.
- 하지만 지금까지 설계한 데이터베이스 모델에는 그러한 기능을 구현하지는 않았습니다.
- 따라서 댓글 기능을 위한 새로운 데이터베이스 모델을 설계해보도록 하겠습니다.
- 아래의 그림을 보면 다음과 같이 설계할 수 있을 것 같습니다.
- 1) 댓글 작성자
- 2) 댓글 프로필 이미지
- 3) 댓글 내용
- 4) 댓글 작성일 - 그림에는 나타나지 않지만, 필요한 기능
models.py
- 모델을 설계해야되니 [blogapp]-[models.py]를 열고, 모델 클래스를 생성합니다.
- 클래스의 이름은 [Comment]로 하고, 일단 다음과 같이 작성합니다.
class Comment(models.Model): blog = models.ForeignKey(Blog, on_delete=True, null=True) comment_date = models.DateTimeField(auto_now_add=True) comment_user = models.TextField(max_length=20) comment_thumbnail_url = models.TextField(max_length=300) comment_textfield = models.TextField()
- 'blog' 객체는 이전에 생성하였던 'Blog' 모델의 주키를 외래키로 가져와서 객체를 생성합니다.
블로그 글마다 주키가 있다고 이전 토픽에서 말한 적이 있습니다.
'Blog' 모델의 주키를 'Comment' 모델이 참조하게 되면 블로그 글 1번의 댓글1, 블로그 글 1번의 댓글2, ... 와 같이 분류하여 참조할 수 있는 것입니다. - 'comment_date' : 댓글 작성일입니다.
- 'comment_user' : 댓글 작성자입니다.
- 'comment_thumbnail_url' : 댓글 프로필 이미지 url 주소입니다.
이는 나중에 프로필 이미지를 url로 가져오기 위함입니다. - 'comment_textfield' : 댓글 내용입니다.
모델을 설계하였으니 이를 데이터베이스에 적용해주어야 합니다. [Tools]-[Run manage.py Task] makemigrations migrate
admin.py 등록
- 모델을 설계하고 데이터베이스에 적용시켰으니 관리자 페이지에서 확인해보도록 합니다.
- 그 전에 [blogapp]-[admin.py] 파일에서 모델을 다음과 같이 등록해줍니다.
from .models import Comment admin.site.register(Comment)
admin 페이지 확인
- admin 페이지에서 항목이 적용되어 있는지 확인해봅니다.
- [Comment 추가]를 누릅니다.
- 기존의 블로그 글을 참조하고 있는 것을 확인할 수 있습니다.