Stage5에서 뉴스피드 관련 모델인 Article을 만들 때 배웠지만 간단히 말해, Database를 만드는 작업이라 설명드렸습니다. 보존하고 싶은 데이터를 체계적으로 정리해두는게 목적이었죠.
이번에는 코멘트 모델을 함께 만들어보겠습니다.
views.py# 코멘트 모델class Comment(models.Model):article = models.ForeignKey(Article, on_delete=models.CASCADE, related_name='comments')author = models.CharField(max_length=120)text = models.TextField()password = models.CharField(max_length=120)created_at = models.DateTimeField(auto_now_add=True)def __str__(self):return self.text
모델 관련 작업을 한 후에는 장고에게 변화를 알려주기 위해, 반드시 위 2개의 명령문을 실행해주어야 합니다.
데이터베이스(즉 모델)에 대한 설명서라 할 수 있는 models.py와 앞서 보여드린 엑셀시트를 비교해보겠습니다.
각 필드들이 models.py의 Comment 안쪽 한줄 한줄에 대응되는 것을 확인하실 수 있습니다. Comment class 안에 있는 article, author, text... 들이 바로 각각의 필드 속성과 같습니다.
이때 처음보는 형태의 article = models.ForeignKey(Article, on_delete=models.CASCADE, related_name='comments')
가 있는데요. 이 부분을 제외한 모든 부분은 Stage5에서 Article을 설명드렸을 때와 같습니다.
필드의 종류를 정리해드리겠습니다.
field 종류 | 용도 |
CharField | 짧은 텍스트(e.g 글 제목) |
TextField | 긴 텍스트(e.g 글 내용) |
DateTimeField | 날짜 |
ForeignKey | 다른 모델과의 관계 설명 (ex 코멘트는 게시글에 포함된다.) |
만약 전화번호부 모델을 만드는데, 친구 메모란을 긴글 텍스트로 필드를 설정하고 싶다면 memo = models.TextField()
라는 줄을 추가해주시면 됩니다.
방금 생성한 Comment 모델을 관리자페이지에 연결하여 봅시다.
admin.pyfrom django.contrib import admin# 중략from facebook.models import Commentadmin.site.register(Comment)