如何在Django中将数据传递给模板?
在下面的模板中,我试图获取法院的名称(通过“机构”字段捕获)。我正在通过avail_times函数传递“club_id”,但如何通过该函数传递模板传递的“Establish”字段 模型:如何在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):
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>