좋아요와 북마크 두 기능이 거의 유사하고 데이터베이스의 이름 정도와 활용 부분에서 조금 차이가 나는 정도이기 때문에 models.py
와 admin.py
를 작성해보도록 하겠습니다.
먼저 models.py
에 Like와 Bookmark 두 개의 클래스를 더 추가해보도록 하겠습니다. 두 클래스가 유사하기 때문에 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)인 Like와 Bookmark를 담아줄 수 있는 필드를 만들어주도록 하겠습니다. 또한 좋아요 수와 북마크 수를 세주는 함수도 추가해주도록 하겠습니다.
파일명 : post/models.py