728x90
Article과 User의 M:N 관계 설정을 통한 좋아요 기능을 구현해보자
목차
- LIKE - 모델 관계 설정
- LIKE 구현
1. LIKE
모델 관계 설정
- ManyToManyField 작성
- migration 진행 후 에러 확인
- like_users 필드 생성 시 자동으로 역참조에는 .article_set 매니저가 생성됨
- 그러나 이전 N:1(Article-User) 관계에서 이미 해당 매니저를 사용중
- user.article_set.all() -> 해당 유저가 작성한 모든 게시글 조회
- user가 작성한 글들(user.article_set)과 user가 좋아요를 누른 글(user.article_set)을 구분할 수 없게 됨
- user와 관계된 ForeignKey 혹은 ManyToManyField 중 하나에 related_name을 작성해야 함
- ManyToManyField에 related_name 작성 후 Migration
- User - Article간 사용 가능한 related manager 정리
- article.user
- 게시글을 작성한 유저 - N:1
- user.article_set
- 유저가 작성한 게시글(역참조) - N:1
- article.like_users
- 게시글을 좋아요한 유저 - M:N
- user.like_articles
- 유저가 좋아요한 게시글(역참조) - M:N
- article.user
2. LIKE 구현
- url 및 view 함수 작성
.exists()
- QuerySet에 결과가 포함되어 있으면 True를 반환하고 그렇지 않으면 False를 반환
- 특히 큰 QuerySet에 있는 특정 개체의 존재와 관련된 검색에 유용
- index 템플릿에서 각 게시글에 좋아요 버튼 출력하기
- 데코레이터 및 is_authenticated 추가
728x90
'Back-end > Django' 카테고리의 다른 글
[Django] REST API (0) | 2022.10.18 |
---|---|
[DB with Django] M:N (User - User) (0) | 2022.10.13 |
[DB with Django] M:N relationship (0) | 2022.10.13 |
[DB with Django] N:1 (Comment - User) (0) | 2022.10.12 |
[DB with Django] N:1 (Article - User) (0) | 2022.10.12 |