Article |
|||
id |
title | content |
category |
1 |
놀러와 |
오늘 친구들이 놀러왔다 |
일기 |
2 | 혼나다 | 게임을 많이해서 부모님께 혼이 났다 | 일기 |
Hashtag |
|
id |
name |
1 |
플스4 |
2 | 위닝2019 |
3 | 중고나라 |
게시글은 해시태그를 3개 중에 아무거나 다 써도 된다.
해시태그도 어떤 게시글에 쓰여도 무방하다.
서로 중복사용 가능하다. 상호종속관계로 이루어져있다.
Ariticle and Hashtag |
||
id | Article(ForeignKey) | Hashtag(ForeignKey) |
1 |
1 | 1 |
2 | 1 |
2 |
3 | 2 |
1 |
4 | 2 | 2 |
5 | 2 | 3 |
테이블을 새로 만들면 해당 형태로 완성된다.
두 개 필드 모두 FK로 관계를 설정해서 사용해도 되는데, 게시글에 해시태그 필드를 만들어서 ManyToMany 관계를 설정하면 더 간편하다.
1 2 | class Hashtag(models.Model): name = models.CharField(max_length=50) | cs |
1 2 3 | class Article(models.Model): (생략) hashtag = models.ManyToManyField(Hashtag) | cs |
해시태그 테이블을 만들었다.
게시글 테이블에 새로운 필드를 만들고, Hashtag 테이블과 ManyToMany관계를 형성한다.
1 2 | hashtag = request.GET.get("hashtag") article_list = Article.objects.filter(hashtag__name=hashtag) | cs |
주소창에서 해시태그의 값을 가져와 변수에 담는데,
필터 사용시 일반 필드와 다른 점이 있다.
게시글 테이블의 해시태그 필드는 해시태그 테이블과 ManyToMany관계로 만들어진 것이다.
ORM대로 게시글 테이블에서 바로 접근할 수 있도록 (hashtag=hashtag) 형태로 필터하고싶으나,
인자를 찾지 못하는 오류가 발생하므로,
해시태그 테이블의 name 필드에 접근하는 (hashtag__name=hashtag) 형태로 필터를 한다.
'코딩 연습 > Django' 카테고리의 다른 글
템플릿에서 게시글과 연결된 모든 댓글 가져오기 (0) | 2018.11.23 |
---|---|
게시글 테이블에서 댓글 테이블로 접근(역으로 접근하기) (0) | 2018.11.22 |
모델 만들기에서 카테고리 선택까지 (0) | 2018.11.21 |
애플리케이션 설계하기 (0) | 2018.11.16 |
장고 개념 (0) | 2018.11.15 |