微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

来自一个数据库表的Django for循环 您的代码有问题 league 不是列表或迭代器或任何类型这是单个记录使您的观点具有正确的上下文

如何解决来自一个数据库表的Django for循环 您的代码有问题 league 不是列表或迭代器或任何类型这是单个记录使您的观点具有正确的上下文

我正在开发一个实时比分应用程序,无法获取表中联赛内的比赛,嵌套的 for 循环为空。

我只获得列出的联赛,并且我希望在联赛中包含属于这些联赛的所有比赛

-Leaugue

  • 匹配
  • 匹配

-联赛

  • 匹配
  • 匹配

我的数据库

enter image description here

型号:

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 %}

浏览器结果:

enter image description here

解决方法

@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 %}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。