【问题标题】:Django Template Tagging inserting a single value from a ListViewDjango 模板标记从 ListView 插入单个值
【发布时间】:2019-01-25 00:45:31
【问题描述】:

所以我正在进行一个网站项目,但我在一个页面上遇到了一些问题。

我基本上将 NBA 球队的胜负加载到一个页面上,并制作我自己的临时排名阶梯。

从我的模型加载的数据如下:

模型.PY

from django.db import models
from django.utils import timezone

# Create your models here.

class Team(models.Model):
    team_name = models.CharField(max_length=500, unique=True, primary_key=True)
    wins = models.PositiveIntegerField()
    losses = models.PositiveIntegerField()
    created_date = models.DateTimeField(default=timezone.now)

我在views.py文件中使用ListView如下:

VIEWS.PY

class LadderListView(LoginRequiredMixin, ListView):
    #this defaults to looking for the models name html so in this case team_list.html
    # so i changed it to template_name variable
    template_name = 'merchbet/ladder_list.html'
    model = models.Team

并渲染 urls.py 文件如下:

path('ladder/', views.LadderListView.as_view(), name='ladder_list'),

这一切都成功了。

当我获得我的 html 代码时,我可以将团队及其赢/输记录打印到带有模板标记的网站,但我希望在底部注入一行,显示“上次更新: {{ team.created_date }}。

这不起作用,我没有收到错误,“{{ team.created_date }}”在 url 页面上没有显示任何内容。

我浏览了文档,看不出我做错了什么。

这是我的html代码:

LADDER_LIST.HTML

{% extends 'merchbet/base.html' %}

{% block content %}
<div class="container">


<table>
<tbody>
<tr>
<td>Team</td>
<td>Wins</td>
<td>Losses</td>
</tr>
{% for teams in object_list %}
<tr>
<td>{{ teams.team_name }}</td>
<td>{{ teams.wins }}</td>
<td>{{ teams.losses }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>

<h2 style="color:white;"> testing {{ team.created_date }}</h2>

{% endblock %}

提前感谢您的帮助。

【问题讨论】:

    标签: django python-3.x django-templates


    【解决方案1】:

    您的模板中没有任何名为 team 的内容。

    如果你只想在第一个显示单个团队的价值,而不关心哪个,只需抓住第一个或最后一个:

    {{ object_list.0.created_date }}
    

    【讨论】:

      【解决方案2】:

      您只需要编辑模型即可解决您的问题

      class Team(models.Model):
          ....
          created_date = models.DateTimeField(auto_now=False, auto_now_add=True) #when you first add team
          updated = models.DateTimeField(auto_now=True, auto_now_add=False) #when you update 
          class Meta :
              ordering = ["-updated","created_date"]
      

      【讨论】:

      • 这不是我想要做的,所有团队都会立即更新,所以我只需要在网站上显示一个更新标签,而不是后端。这更多的是让用户知道上次更新赢/输的时间......更多关于模板标记的问题,我很确定我做剩下的好吗?
      • 您可以将更新的内容添加到模型中并使用 {{ team.updated }} 或 {{ team.updated|timesince }}
      • 不幸的是,这不起作用,只是为了记录 {{team.losses}}、{{team.wins}} 等都不能在那个位置工作,所以我认为问题是其他地方....是的,在进行了您上面建议的更改后,我确实迁移了
      • 它不起作用,因为你没有将它包含在循环中 {{ team.updated }} 应该在 for 循环中
      • 这是我的问题,我不想为每个团队打印 30 次,我想在底部打印一次。这可能吗?
      猜你喜欢
      • 1970-01-01
      • 2020-10-29
      • 1970-01-01
      • 2010-10-07
      • 2015-10-12
      • 2018-12-15
      • 2020-09-27
      • 1970-01-01
      • 2020-02-03
      相关资源
      最近更新 更多