我在我的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'),
Cricket 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 :(得分:1)
这是添加断点的好地方。你非常想知道你的上下文和自己的字段。在import pdb; pdb.set_trace()
中添加get_context_data
,您就可以看到对象上的字段了。使用dir(obj)
和obj.keys()
查看某些内容的所有字段。
或者,如果您可以在上下文变量中访问巡视对象,则可以在模板中使用tour.match_set.all
另外,请注意使用大写字母T命名上下文变量Tour
,因为这是模型的名称。