좋아요와 북마크 두 기능이 거의 유사하고 데이터베이스의 이름 정도와 활용 부분에서 조금 차이가 나는 정도이기 때문에 models.pyadmin.py를 작성해보도록 하겠습니다.

먼저 models.pyLikeBookmark 두 개의 클래스를 더 추가해보도록 하겠습니다. 두 클래스가 유사하기 때문에 Like를 만들고 Like를 토대로 Bookmark도 작성해보도록 하겠습니다.

파일명 : post/models.py

...

class Like(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
    created_at = models.DataTimeField(auto_now_add=True)
    updated_at = models.DataTimeField(auto_now=True)

    class Meta:
        unique_together = (
            ('user' , 'post')
        )

class Bookmark(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
    created_at = models.DataTimeField(auto_now_add=True)
    updated_at = models.DataTimeField(auto_now=True)

    class Meta:
        unique_together = (
            ('user' , 'post')
        )

터미널에서 아래와 같은 명령어를 입력합니다.

(venv)root@goorm:/workspace/instaclone/instaclone# python manage.py makemigrations

(venv)root@goorm:/workspace/instaclone/instaclone# python manage.py migrate

그리고 Post 클래스에 중개 모델(intermediate model)인 LikeBookmark를 담아줄 수 있는 필드를 만들어주도록 하겠습니다. 또한 좋아요 수와 북마크 수를 세주는 함수도 추가해주도록 하겠습니다.

파일명 : post/models.py