본문 바로가기
Library&Framework/Django

게시글 댓글을 생성하는 함수에서 왜 인자로 article_id 를 꼭 넣어줘야 할까 ??

by 우지uz 2023. 9. 20.

Article 을 Foreignkey 로 갖고와서 그런가

db에 보면, article_id 가 존재했다. 

User 모델도 Foreignkey 로 갖고오긴 했는데 ..

User 모델이 아닌, 다른 Model을 Foreignkey 로 가져오면

인자로 article_id를 넣어줘야 하는 규칙인건가

 

article_id 를 get 함수의 인자로 넣어주니까 에러가 해결됐다. 

article_id 를 get 함수의 인자로 넣어주긴 했고,
함수 로직에는 사용하지 않는 인자이지만 해결되었다. 

댓글을 새롭게 POST 하는 시리얼라이저에서 

시리얼라이저 메소드 필드로 article.id를 사용하고 있기 때문에 그런건지는 몰라도

article_id 를 

인자로 넣어주라니 ... 그래서 그런가? 

 

결론은 두가지였다.

1. 위에서 말했던, serializers.py 에서 

get_article 로 obj.article.id 를 받아오고 있기 때문에 
views.py 로직에서 필요했다는 타당한 이유와 

 

2. 댓글을 전체보는 로직이더라도

a. 특정 게시글에 대한 댓글 전체를 불러올 것인지

b. 게시글과 관련없이 모든 댓글을 불러올 것인지

c. 특정 사용자가 작성한, 모든 댓글을 불러올 것인지
를 따져봐야 한다. 

나는 첫번째, 특정 게시글 id 에 대해서 댓글 전체를 불러오는 것이기 때문에 article_id를 변수로 선언해주어야 한다는 점. 

그래서 그 게시글에 대해서 

        comments = Comment.objects.filter(article_id=article_id)

를 적용시켜도 되고, 

article = Article.objects.get(id=article_id)
comments = article.comment_article.all()

를 적용시켜서 필터링해도 된다. comment_article 는 relate_name이다. 
따로 설정해두지 않았다면, article_set 으로 설정된다.