두 개의 템플릿에서 개체를 필터링하려고합니다. 한 (부모)는 가장 최근에 업데이트 된 5 개를 표시하고 다른 하나는 모두 표시해야합니다.django - 여러 템플릿에서 개체를 필터링하고 있습니까?
이views.py :이
...
class ChannelProjectList(generic.ListView):
context_object_name = 'projects_by_channel'
template_name = 'channels/projects_by_channel.html'
def get_queryset(self):
self.channel = get_object_or_404(Channel, slug=self.kwargs['slug'])
return Project.objects.filter(channel=self.channel)
...
HTML : 나는에 갈 때
{% for project in projects_by_channel %}
{{project.name}}
{% endfor %}
는 그러나 "를 포함
나는 후자는 다음 코드를 사용하여 완벽하게 작동해야 부모 페이지에서 깨집니다. 약간의 연구가 끝나면 왜 그런 일이 일어나는지, 그리고 왜 그런 일을하는 것이 적절한 지 이해할 수 없습니다. 나는 주위를 파고 this을 찾았는데 정확히 무엇을하려고하는지 알 것 같지만 구현했을 때 작동하지 않았을뿐만 아니라 작동중인 페이지를 부러 뜨렸다.이것은 아주 간단한 것처럼 느껴지지만이 프로젝트가 처음으로 새로운 프로젝트를 시작한 이래로 나는 매일 새로운 프로젝트에 뛰어 들고 있습니다.
최종 해결책 : this의 도움으로
나는 내가 "view.channel_projects"를 사용하여 템플릿에 전화를 한 후 수 있었다 두 번째 템플릿보기에 같은 get_queryset에 복사 할 필요 실현
슬라이스가 훨씬 깨끗해 보입니다. 문제는 내가 채널 템플릿을 사용하고있을 때 projects_by_channel에있는 "projects"를 찾지 못하고 {% empty %} 부분 만 표시하고있는 것 같습니다. 그게 합리적이라면 generic.ListView의 template_name 부분 만이 그 템플릿에서 작동하도록 허용하고있는 것처럼 느껴 집니까? –
다른보기의 경우 다른보기 기능을 정의해야합니다. 따라서 다른 템플릿에서 뷰를 작성해야하며 이러한 뷰에서 각 템플릿의 컨텍스트 변수를 정의해야합니다.두 번째 템플릿은 어딘가에서보기가 있어야합니다. "include"를 사용하면 동일한 변수가 적용됩니다. – hansTheFranz
고맙습니다. –