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 필드로 접근하려면 __ (더블언더바)를 반드시 사용해야한다.

블로그 이미지

쵸잇

,