작성
·
172
0
41강 6분 13초에 하신 말씀이신데요.
현재의 프로젝트의 오브젝트와 같은프로젝트를 가진 아티클을 object_list 에 담았다.
object_list = Article.objects.filter(project=self.get_object())
느낌적으로는 알겠는데 한국말로 번역이 잘 안돼서요 ..
이 바로 다음에 detail.html에서
article_lis에서 아무 게시물이나 전체 다 뽑아내면 안되니까 with태그를 사용해서 필터링이 되어있는 object_list를 담아서 쓴다는건 알겠는데요 (틀리면어쩌지)
그리고 다시 저 색칠해둔거 보면 또 혼란이 와서요.
어떻게 필터링이 된건지를 모르겠어요.
어떤부분이 필터링이 된 부분인지.. 어떻게 해서 프로젝트 디테일부분을 보면 해당 프로젝트 사진들만 싹 나오는건지
느낌만 있고 어디부분인지 명확히 잘 모르겠어서 한번 질문드려봅니다..
답변 2
0
0
안녕하세요!
질문 확인했습니다.
일단 프로젝트 detail 페이지에서 해당 프로젝트에 해당하는,
그러니까 해당 게시판에 해당되는 게시글만 필터링해서 보여주는 것이 목적이라는 점을 염두에 두시고
답변을 참고해주시면 감사하겠습니다.
object_list = Article.objects.filter(project=self.get_object())
구문을 하나하나 해석해보도록 하겠습니다.
Article.objects.filter(project=self.get_object())
먼저 봐야할 것은 Article.objects.filter 구문,
그러니까 Article 객체들을 필터링 하는 과정입니다.
모든 데이터베이스에 저장되어있는 Article 객체들 중에서
어떤 조건에 맞는 객체들만 걸러내주는거죠.
Article.objects.filter(project=self.get_object())
그 다음으로 봐야할 것은 조건문입니다.
이 부분을 해석하자면 project 라는 값이 self.get_object() 와 같은 값인 조건을 명시하고 있습니다.
이 project의 경우에는, 저희가 처음에 만들었던 Article 모델을 다시 보게 되면,
class Article(models.Model):
writer = models.ForeignKey(User, on_delete=models.SET_NULL, related_name='article', null=True)
project = models.ForeignKey(Project, on_delete=models.SET_NULL, related_name='article', null=True)
title = models.CharField(max_length=200, null=True)
...
이런식으로 Article객체에는 project 라는 이름의 ForeignKey 가 존재하는 것을 볼 수 있죠.
간단하게 말하면 Project 객체와의 연결고리가 있다는거죠.
그리고 self.get_object() 의 경우에는
지금 현재 요청에 포함된 pk 값을 가지는 프로젝트 객체가 될것이구요.
object_list = Article.objects.filter(project=self.get_object())
결국 위의 모든 구문이 의미하는 것은
1. Article 모든 객체들 중에서
2. Article 속성 중 project가
3. 지금 유저가 요청 하는 project 객체와 같은
4. 모든 Article 객체를 object_list 라는 변수에 저장
하는 과정이라고 보시면 됩니다.
결국 게시판의 글들만 필터링하는거죠.
답변이 도움이 되셨을지 모르겠네요.
좋은하루 보내시길 바랍니다!