멋쟁이 사자처럼 at 한국교통대학교 7기

2019 KNUT X LIKE LION #7

모델 설계

토픽 멋쟁이 사자처럼 at 한국교통대학교 7기 > 웹 애플리케이션 개발 > Django
모델 설계

  • 블로그 글에 댓글을 단다는 것은 데이터베이스에 데이터를 저장하는 일입니다.
  • 하지만 지금까지 설계한 데이터베이스 모델에는 그러한 기능을 구현하지는 않았습니다.
  • 따라서 댓글 기능을 위한 새로운 데이터베이스 모델을 설계해보도록 하겠습니다.

 

  • 아래의 그림을 보면 다음과 같이 설계할 수 있을 것 같습니다.
  • 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 추가]를 누릅니다.

 

  • 기존의 블로그 글을 참조하고 있는 것을 확인할 수 있습니다.

 

 

 

 

 

댓글

댓글 본문
  1. 구본승
    Django 3.X 에서는 makemigrations에서 TypeError: on_delete must be callable. 오류가 나는데
    구글에 검색해보니까 on_delete=models.CASCADE로 해주니 되네요
  2. Youngtaek Hong
    안녕하세요~ 좋은 강의 감사합니다!

    이거 보면서 하고 있는데 makemigrations에서는 모델이 생성됬는데 migrate를 하니까

    No migrations to apply가 뜨더라구요. 무시하고 admin에 들어가서 comment를 추가해봤는데 오류가 나오네요 ㅠㅠ 검색해보니까 테이블에 칼럼이 없다는 오류라는데 어떻게 해결 할 수 있을까요?