django - 如何将数据传递给 Django 中的模板?

标签 django templates view parameters

在下面的模板中,我试图获取法院的名称(通过“机构”字段捕获)。我正在通过avail_times函数传递“club_id”,但是如何通过模板传递“建立”字段?

型号:

class Club(models.Model):
    establishment = models.CharField(max_length=200)
    address = models.CharField(max_length=200)
    def __unicode__(self):
        return self.establishment

class Available(models.Model):
    club = models.ForeignKey(Club)
    court = models.CharField(max_length=200)
    avail_time = models.DateTimeField('available time')
    def __unicode__(self):
        return self.court

功能:
def avail_times(request, club_id):
courts = Available.objects.filter(club__id=club_id)
return render_to_response('reserve/templates/avail_times.html', {'courts': courts})

模板:
    <h1>All available courts for {{ court.club }}</h1>
<ul>
{% for court in courts %}
    <li>{{ court }}</li>
{% endfor %}
</ul>

最佳答案

def avail_times(request, club_id):
  courts = Available.objects.filter(club__id=club_id)      
  if courts.count() > 0:
    club_name = courts[0].club.establishment
  else:
    # no results found for this club id!

# perhaps it is better to check explicity if the club exists before going further, 
# eg. Club.objects.get(pk=club_id)
# is club_id passed in as a string? I haven't used django in awhile somethign 
# worth looking into?

return render_to_response('reserve/templates/avail_times.html', {'courts': courts, 'club_name': club_name})


<h1>All available courts for {{ club_name }}</h1>
<ul>
  {% for court in courts %}
    <li>{{ court.club.establishment }}</li>
  {% endfor %}
</ul>

您可以使用点表示法跨越外键关系。您必须“通过”外键才能到达 Club模型。这是通过访问 club 来完成的。属性。所以另外假设你想访问机构名称和地址,你可以添加 <li>{{ court.club.address }}</li>也显示地址。

不过要小心,您可以使用 django 调试工具栏来查看正在执行的查询数量。如果你有很多球场,你可能会注意到性能下降。只是要记住一些事情。

Courts 是一个查询集对象。您正在尝试访问 court.club 的属性这是不存在的,因为您可能已经注意到 django 在发生这种情况时会默默地失败。有几种获取俱乐部名称的方法。

您可能想对您的架构提出一些想法。俱乐部可以有多个球场吗??如果不是,使用 .get“更好”正如查希尔建议的那样。如果它可以有多个法院,那么您应该研究多对多关系以更好地反射(reflect)这一点。

关于django - 如何将数据传递给 Django 中的模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10601126/

相关文章:

python - Django:如何在模板中获取站点的根路径?

python - 序列化器在 Django shell 中工作但在 View 中失败

swift - Swift 中使用 View 的 LED 横幅

sql - 创建Oracle物化 View ,每5分钟刷新一次使用物化 View 日志

Django - 反向查找

python - 如何装饰 Django 中的管理操作,action.__name__ 用作字典键?

javascript - 如何在 jump-break blogger/blogspot 之前显示摘要帖子

c++ - 如何将类方法作为参数传递给另一个函数并稍后调用它,最好使变量类方法签名显式?

c++ - Variadic 模板,没有匹配的调用函数

python - Django 查询结果与if语句比较