Python Django模板过滤
我试图创建一个网站,在那里你可以看到不同的“等级”和其中的人。我已经得到它来创建排名到有自己的可折叠面板,因为我使用的是Bootstrap3,但我无法列出拥有该排名的用户。请帮忙Python Django模板过滤,python,html,django,twitter-bootstrap,Python,Html,Django,Twitter Bootstrap,我试图创建一个网站,在那里你可以看到不同的“等级”和其中的人。我已经得到它来创建排名到有自己的可折叠面板,因为我使用的是Bootstrap3,但我无法列出拥有该排名的用户。请帮忙 #team.html template <div class="container"> <div class="col-md-2"> <div class="panel-group" id="accordion"> {% for rank in Rank_list %}
#team.html template
<div class="container">
<div class="col-md-2">
<div class="panel-group" id="accordion">
{% for rank in Rank_list %}
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapse{{rank.rank_num}}">
{{ rank.rank_name }}s
</a>
</h4>
</div>
<div id="collapse{{rank.rank_num}}" class="panel-collapse collapse in">
<div class="panel-body">
{% for name in User_list %}
<li>
<p>{{name}}</p>
</li>
{% endfor %}
</div>
</div>
</div>
{% endfor %}
</div>
</div>
您需要在外键中添加一个
相关的\u名称
。像这样:
rank = models.ForeignKey(Rank, related_name='users')
然后可以通过如下循环访问用户:
{% for user in rank.users.all %}
{{ user }}
{% endfor %}
对于每个
Rank
对象,您可以反转关系并获取与该Rank
相关的所有用户
# models.py
# - Use `related_name` for making relationship that are easy to read and follow
# - https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey.related_name
class User(...):
rank = models.ForeignKey(Rank, related_name="users")
# view.py
# - Use prefetch_related allows us to cut down our queries when iterating as we do an up-front join
# - https://docs.djangoproject.com/en/dev/ref/models/querysets/#prefetch-related
...
def get_queryset(self):
return Rank.objects.prefetch_related('users')('rank_num')
# template.py
{% for rank in Rank_List %} # You shouldn't capitalise your template variables
{% for user in rank.users.all %}
{{ user }}
{% endfor %}
{% endfor %}
最后,您应该使用谢谢!他们的帮助正是我所需要的!无需显式添加相关的_名称。Django默认设置一个,即
user\u set
。不客气!请将答案标记为已接受。此外,我建议使用Django的内置用户模型,如下面的评论所述。参见Django文档:我将内置用户模型用作其他东西。谢谢你!
# models.py
# - Use `related_name` for making relationship that are easy to read and follow
# - https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey.related_name
class User(...):
rank = models.ForeignKey(Rank, related_name="users")
# view.py
# - Use prefetch_related allows us to cut down our queries when iterating as we do an up-front join
# - https://docs.djangoproject.com/en/dev/ref/models/querysets/#prefetch-related
...
def get_queryset(self):
return Rank.objects.prefetch_related('users')('rank_num')
# template.py
{% for rank in Rank_List %} # You shouldn't capitalise your template variables
{% for user in rank.users.all %}
{{ user }}
{% endfor %}
{% endfor %}