【问题标题】:Print foreign key value in template without doing a query在模板中打印外键值而不进行查询
【发布时间】:2022-01-10 11:01:14
【问题描述】:

我有一个查询,在我看来是为了获取一堆团队统计对象...

    team_stats = NCAABTeamStats.objects.filter(
            name__name__in=teams_playing).order_by(sort)

“名称”字段之一是外键。我将 team_stats 传递给我的模板,以通过“for 循环”在图表中显示数据。

    {% for team in team_stats %}
       <tr>
          <td>
              {{ team.name }}
          </td>
       </tr>
    {% endfor %}

所以在我的模板中,对于 team_stats 中的每个对象,它在打印 {{ team.name }} 时都会进行查询,这确实会减慢速度,尤其是当有 50-100 个团队时。

我的问题是,有没有办法打印 'team.name' 而无需每次都进行查询?

【问题讨论】:

  • 您能否发布您的模型定义,即NCAABTeamStatsName 模型。
  • 如果是外键,你可以这样做team_stats=NCAABTeamStats.objects.select_related('name').filter(name__name__in=teams_playing).order_by(sort)
  • @amadousow 这正是我想要的。像魅力一样工作,非常感谢!如果你想把它作为答案,我会接受它。

标签: python django django-templates


【解决方案1】:

如果是外键,你可以这样做

team_stats=NCAABTeamStats.objects.select_related('name').filter(name__name__in=teams_playing).order_by(sort)

您可以了解更多关于 select_related here

如果它是一个多对多字段,你可以这样做

team_stats=NCAABTeamStats.objects.prefetch_related('name').filter(name__name__in=teams_playing).order_by(sort)

您可以了解更多关于 prefetch_related Here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-25
    • 1970-01-01
    • 1970-01-01
    • 2020-07-12
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    相关资源
    最近更新 更多