0

for-loop를 HTML 템플릿과 거의 비슷하게 만들었습니다. 내가 겪고있는 문제는 다른 투어의 목록 인 성냥입니다.클래스 기반 뷰에 추가 컨텐츠 추가 및 필터링

이 문제를 해결하는 방법은 기본적으로 "이 둘러보기와 관련하여 일치 항목 만 가져옵니다"라는 필터를 추가하는 것입니다.이 필터는 Match.objects.filter에서 아래에서 시도한 것입니다.()하지만 작동하지 않는 이유를 모르겠습니다.

class CricketCalendar(generic.ListView): 
    template_name="monthly_view/cricket-monthly-view.html" 
    context_object_name='cricket_monthly_view' 
    queryset = CricketMonthlyView.objects.all() 

    def get_context_data(self, **kwargs): 
     context = super(CricketCalendar, self).get_context_data(**kwargs) 
     context['Tour'] = Tour.objects.all() 
     context['Match'] = Match.objects.filter(tour=self.request.Tour) 
     return context 

가 나는 또한 시도 다음과도 일 :

self.kwargs['pk'] 
self.kwargs['Tour'] 

편집, 다음 추가하는 것을 잊었다 :

월별보기 models.py :

class CricketMonthlyView(models.Model): 
    tour = models.ForeignKey('cricket.Tour', on_delete=models.CASCADE, 
related_name='tour_name') 
    match_id = models.ForeignKey('cricket.Match', on_delete=models.CASCADE) 

및 URLs.py :

url(r'^monthly-view/$', monthly_view.CricketCalendar.as_view(), name='cricket-monthly'), 

크리켓 models.py :

class Tour(models.Model): 
    name = models.CharField(max_length=200) 
    tier_level = models.ForeignKey('sports.Tier') 
    country = CountryField() 
class Match(models.Model): 
    tour = models.ForeignKey('Tour', on_delete=models.CASCADE) 

그리고 HTML 템플릿 :

{% for match_info in cricket_monthly_view %} 
{% for tour in Tour %} 
<ul> 
    <li>{{tour.name}}</li> 
</ul> 
{% for match in Match %} 
    <ul> 
    <li>{{match.home_team}}</li> 
    <li>{{match.away_team}}</li> 
    </ul> 
{% endfor %} 
{% endfor %} 

{%의 ENDFOR의 %는}

+0

여기에 충분한 정보가 없습니다. 'CricketMonthlyView','Tour'와'Match'는 어떻게 서로 관련이 있습니까? 보기의 URL 패턴은 무엇입니까? for-loop가 작동하지 않는 이유는 무엇입니까? – Alasdair

+0

실례합니다. 원래 게시물을 업데이트했습니다. –

답변

1

이 중단 점을 추가하는 좋은 장소입니다. 너는 너의 문맥에, 그리고 각자에 분야를 거의 알 싶 는다. 에 import pdb; pdb.set_trace()을 추가하면 개체의 필드를 볼 수 있습니다. 어떤 항목의 모든 입력란을 보려면 dir(obj)obj.keys()을 사용하십시오. 당신이 당신의 상황 변수에 투어 개체에 액세스 할 수있는 경우

또는, 템플릿에 당신은 그것의 일치는 또한 tour.match_set.all

와 일치 얻을 수, 자본 T와 컨텍스트 변수 Tour 명명에주의 때문에 그것이 당신 모델의 이름입니다.

+0

tour.match_set.all이 완벽하게 작동했습니다. 그 점에 대해 대단히 감사합니다. 나는 또한 컨텍스트 변수를 자본화했다. 나는 여전히 파이썬 쉘을 사용하고있다. 내가 언급 한 브레이크 포인트를 읽었을 것이다. 이제 더 큰 프로젝트를 만들기 시작했다. 대단히 감사합니다. –

+0

도와 드릴 수있어서 기쁩니다. 미래의 시간을 절약 할 수있는 몇 가지 팁 - ipython (python의 더 예쁜 버전)과 ipdb (pdb의 더 예쁜 버전)를 설치하십시오. 그리고 나는 이것이 장사 할 생각은 없지만, 장고 전체 튜토리얼을 다 읽지 않았다면, 나는 그것을 강력히 추천합니다. Django에는 너무 많은 내장 유틸리티가있어서 많이 읽지 않고 무엇을 사용해야하는지 알기는 어렵지만 튜토리얼은 먼 길을 간다. –