Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Django中将数据传递给模板?_Django_Templates_View_Parameters - Fatal编程技术网

如何在Django中将数据传递给模板?

如何在Django中将数据传递给模板?,django,templates,view,parameters,Django,Templates,View,Parameters,在下面的模板中,我试图获取法院的名称(通过“机构”字段捕获)。我正在通过avail_times函数传递“club_id”,但如何通过该函数传递模板传递的“Establish”字段 模型: class Club(models.Model): establishment = models.CharField(max_length=200) address = models.CharField(max_length=200) def __unicode__(self):

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

模型:

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>
所有可用的{{court.club}球场
    {%适用于法院中的法院%}
  • {{court}
  • {%endfor%}
def可用时间(请求、俱乐部id):
courts=可用.objects.filter(俱乐部id=俱乐部id)
如果courts.count()大于0:
club_name=球场[0]。club.Establish
其他:
#找不到此俱乐部id的结果!
#也许在继续之前最好明确检查俱乐部是否存在,
#例如Club.objects.get(pk=Club\u id)
#club_id是否作为字符串传递?我有一段时间没用django了
#值得研究吗?
返回render_to_response('reserve/templates/avail_times.html',{'courts':courts,'club_name':club_name})
所有可用的{{俱乐部名称}法庭
    {%适用于法院中的法院%}
  • {{court.club.restitution}
  • {%endfor%}
您可以使用点表示法跨越外键关系。您必须“通过”外键才能进入
俱乐部
型号。这是通过访问
俱乐部
属性来完成的。因此,另外假设您希望访问机构名称和地址,您可以添加
  • {{{court.club.address}}
  • 来显示地址

    不过要小心,您可以使用django调试工具栏查看执行了多少查询。如果你有很多球场,你可能会注意到一个性能打击。只是要记住一些事情

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


    您可能需要对您的模式进行一些思考。俱乐部可以有多个场地吗??如果没有,最好按照Zahir的建议使用
    。获取
    。如果它可以有多个法院,那么您应该研究多个法院之间的关系,以更好地反映这一点。

    我正在尝试在第一行显示法院机构名称。当我在第一行加上“法院、俱乐部、机构”时,它就不起作用了。这是为什么?我怎样才能让它显示出来?谢谢你的帮助!我是django的新手……俱乐部可以有多个球场,您建议如何编辑该模式?你说的多人关系是什么意思?这太棒了!我想知道如何从多个模型拉到一个视图中。作为旁白,你应该使用courts=Available.objects.get(club\uu id=club\u id),它更快。
    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>