Article |
||||
id | title | content | category | hashtag(ManyToMany(Hashtag__name)) |
1 | 자바 | 안드로이드 따라하기 시작 | dv | java, android |
2 | 파이썬 | 장고 배달의 민족 클론하기 | dv | python, django |
(Aritlce 테이블)
단독 게시글 페이지(상세페이지)에서 댓글 리스트를 출력하고 싶은데,
댓글 테이블에서는 게시글이 다대일 관계로 접근이 가능한데, 역으로는 접근가능한 방법이 없다.
이를 해결하는 방법
Comment |
|||
id | article(ForeignKey(Article)) | name |
content |
1 | 1 | Ryan |
좋은 시작이야 |
2 | 2 | Adrianne | I'm so relieved that you've come to your senses |
3 | 2 | Jack | 나는 어렵더라 |
4 | 1 | Paul | Good job man~ |
Ariticle 테이블과 Comment 테이블은 다대일 관계를 맺고 있다.
테이블을 살펴보면, Comment 테이블에서 Article 테이블로 접근이 가능하다.
그러므로 Article 테이블의 데이터를 유용하게 옮겨 쓸 수 있다.
그런데, 반대로 Article 테이블에서 Comment 테이블의 데이터를 가져오려해도 접근 방법이 보이지 않는다.
이를 위해 Comment 테이블의 article 필드에서 "related_name" 치트를 사용하여 Article 테이블에서의 접근을 허용한다.
1 2 3 4 5 6 7 8 | class Comment(models.Model): article = models.ForeignKey( Article, related_name="article_comments", on_delete=models.CASCADE ) name = models.CharField(max_length=50) content = models.CharField(max_length=200) | cs |
1 2 3 4 5 6 7 | def detail(request, article_id): article = Article.objects.get(id=article_id) comment_list = article.article_comments.all(article__id=article_id) ctx = { "article" : article, "comment_list" : comment_list, } | cs |
*ORM 사용시 Article 테이블에서 id 필드로 접근하려면 __ (더블언더바)를 반드시 사용해야한다.
'코딩 연습 > Django' 카테고리의 다른 글
폼을 통해 데이터 입력받고 View에서 처리하기 (0) | 2018.11.23 |
---|---|
템플릿에서 게시글과 연결된 모든 댓글 가져오기 (0) | 2018.11.23 |
게시글과 해시태그 사이의 ManyToMany 관계 (0) | 2018.11.21 |
모델 만들기에서 카테고리 선택까지 (0) | 2018.11.21 |
애플리케이션 설계하기 (0) | 2018.11.16 |