问题描述
我正在开发一个实时比分应用程序,无法获取表中联赛内的比赛,嵌套的 for 循环为空。
我只获得列出的联赛,并且我希望在联赛中包含属于这些联赛的所有比赛
-Leaugue
- 匹配
- 匹配
-联赛
- 匹配
- 匹配
我的数据库
型号:
class basic_scores(models.Model):
time_status = models.CharField(max_length=5)
time_minute = models.CharField(max_length=5)
localteam_data_name = models.CharField(max_length=255)
visitorteam_data_name = models.CharField(max_length=255)
scores_localteam_score = models.CharField(max_length=15)
scores_visitorteam_score = models.CharField(max_length=15)
country_name = models.CharField(null=True,max_length=255)
league_name = models.CharField(null=True,max_length=255
查看:
def league(request):
#live_list = football_Nows.objects.all()
live_list = basic_scores.objects.all()
return render(request,'league.html',{'live_list': live_list})
联赛.html:
<h1>Live</h1>
{% for league in live_list %}
<center>
<td>{{ league.league_name }}</td>
{% for live in league %}
<td>{{ live.time_minute }}</td>
<td>{{ live.localteam_data_name }}</td>
<td>{{ live.scores_localteam_score }} : {{ live.scores_visitorteam_score }}</td>
<td>{{ live.visitorteam_data_name }}</td>
{% endfor %}
</center>
{# This is a comment. #}
{% endfor %}
浏览器结果:
解决方法
@Ronnin 您需要修改您的视图并正确创建上下文才能实现您的结果。
让我们一步一步来:
您的代码有问题。 league
不是列表或迭代器或任何类型。这是单个记录。
{% for league in live_list %}
<center>
<td>{{ league.league_name }}</td>
{% for live in league %} // this is wrong
<td>{{ live.time_minute }}</td>
<td>{{ live.localteam_data_name }}</td>
<td>{{ live.scores_localteam_score }} : {{ live.scores_visitorteam_score }}</td>
<td>{{ live.visitorteam_data_name }}</td>
{% endfor %}
使您的观点具有正确的上下文。
def league(request):
#live_list = football_nows.objects.all()
live_list_obj = basic_scores.objects.all()
live_list = {}
for live in live_list_obj:
if not live.league_name in live_list:
live_list[live.league_name] = [live]
else:
live_list[live.league_name].append(live)
return render(request,'league.html',{'live_list': live_list})
这是视图的 html
{% for league_name,league_details in live_list.items %}
<center>
<td>{{ league_name }}</td>
{% for live in league_details %}
<td>{{ live.time_minute }}</td>
<td>{{ live.localteam_data_name }}</td>
<td>{{ live.scores_localteam_score }} : {{ live.scores_visitorteam_score }}</td>
<td>{{ live.visitorteam_data_name }}</td>
{% endfor %}