2015-08-28 3 views
0

У меня есть страница, в которой перечислены все athletes, которые есть у определенного coach. Однако тренеры могут иметь несколько команд, и я пытаюсь разрешить им выбирать команду из раскрывающегося списка вверху страницы и динамически фильтровать список спортсменов, чтобы показывать только те из выбранной команды.Список динамического фильтра Django в шаблоне

Мой шаблон:

<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

Вам необходимо написать вызов ajax, чтобы вытащить данные с вашего сервера и обновить список. Ничего не может сделать шаблон django. –

+0

Каким будет процесс для этого? –

+0

Я сделал несколько поисковых запросов, и вот пример: http://www.devinterface.com/blog/en/2011/02/how-to-implement-two-dropdowns-dependent-on-each-other-using-django- и-jquery /, не уверен, что имеет смысл для вас. –

ответ

2

Вы можете использовать django-filter для него https://github.com/alex/django-filter.

Пример из документации:

Модель

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}) 

Шаблон

{% block content %} 
    <form action="" method="get"> 
     {{ filter.form.as_p }} 
     <input type="submit" /> 
    </form> 
    {% for obj in filter %} 
     {{ obj.name }}<br /> 
    {% endfor %} 
{% endblock %} 
Смежные вопросы