我有一个页面,其中列出了某个athletes
所拥有的所有coach
。但是,教练可以拥有多个团队,我试图允许他们从页面顶部的下拉列表中选择一个团队,并动态过滤运动员列表,仅显示所选团队的成员。
我的模板:
<table class='table'>
<tr>
<td><h3>Team</h3></td>
<td><h3>First Name</h3></td>
<td><h3>Last Name</h3></td>
<td><h3>Email</h3></td>
</tr>
{% for athlete in athletes %}
{% if not athlete.coach_ind %}
<tr><td>
{% for team in athlete.team.all %}
{{ team.school }} {{ team.mascot }} {{ team.sport }}
{% endfor %}
</td>
<td>{{ athlete.user.first_name }}</td>
<td>{{ athlete.user.last_name }}</td>
<td>{{ athlete.user.email }}</td>
</tr>
{% endif %}
{% endfor %}
</table>
我的观点:
teams_list = request.user.profile.team.all()
athletes = UserProfile.objects.filter(team__in=teams_list).order_by('team','user__last_name')
我能够成功获得所有运动员及其信息的正确列表,我只是不确定如何创建一个仅由团队展示的动态过滤器。
答案 0 :(得分:2)
你可以使用django-filter https://github.com/alex/django-filter。
文档示例:
<强>模型强>
composer.json
过滤强>
class Product(models.Model):
name = models.CharField(max_length=255)
manufacturer = models.ForeignKey(Manufacturer)
查看强>
class ProductFilter(django_filters.FilterSet):
class Meta:
model = Product
fields = ['manufacturer']
<强>模板强>
def product_list(request):
f = ProductFilter(request.GET, queryset=Product.objects.all())
return render_to_response('my_app/template.html', {'filter': f})
答案 1 :(得分:0)
这类&#34;链接的另一个应用程序&#34;选择是可选择的(http://django-selectable.readthedocs.io/en/latest/advanced.html#chained-selection)。但是,您必须在模板中添加一些额外的javascript。