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

 2

1

 3

2

 4

2

 5

2


테이블을 새로 만들면 해당 형태로 완성된다.

두 개 필드 모두 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) 형태로 필터를 한다.



블로그 이미지

쵸잇

,