Django动态过滤模板中的列表

时间:2015-08-28 21:00:43

标签: django dynamic filtering

我有一个页面,其中列出了某个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')

我能够成功获得所有运动员及其信息的正确列表,我只是不确定如何创建一个仅由团队展示的动态过滤器。

2 个答案:

答案 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。