0

私は自分のHTMLテンプレートにforループを作りました。私が持っている問題は、別のツアーの別のリストの一致です。クラスベースのビューに余分なコンテンツを追加してフィルタリングする

これを修正する方法は、基本的に「このツアーで行うマッチを引き出す」というフィルタをビューに追加することです。これは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()get_context_dataに追加すると、オブジェクトのフィールドが表示されます。何かのすべてのフィールドを表示するには、dir(obj)obj.keys()を使用してください。

あなたはコンテキスト変数ツアーオブジェクトへのアクセス権を持っている場合あるいは、あなたのテンプレートにあなたがまたtour.match_set.all

とのマッチングの一致を得ることができ、資本Tにコンテキスト変数Tourに名前を付けるには注意が、なぜならそれがあなたのモデルの名前です。

+0

tour.match_set.allは完全に機能しました。大変ありがとうございます。私はまた、コンテクスト変数の資本を減らしました。私はまだPythonシェルのハングアップを取得していますが、私があなたが言及したブレークポイントのことを読んで、私はより大きなプロジェクトを構築し始めました。 ありがとうございました:) –

+0

私は助けることができてうれしいです。将来の時間を節約するためのヒント - ipython(Pythonのより美しいバージョン)とipdb(pdbのより美しいバージョン)をインストールしてください。そして、私はこれをひいきにするつもりはありませんが、あなたがDjangoのチュートリアル全体を手がけていないなら、私はそれを強く勧めます。 Djangoにはたくさんのビルトインユーティリティがありますので、たくさん読まなくても何を使うべきかを知るのは難しいですが、このチュートリアルは長い道のりです。 –

関連する問題