Как мне получить фильтры списков, аналогичные фильтрам в консоли администратора в моих списках? - PullRequest
0 голосов
/ 19 декабря 2018

Я пишу свое первое приложение django, и в одном из моих ListView будут сотни записей.Я хочу, чтобы пользователь мог фильтровать результат.Виджет фильтра в консоли администратора выглядит интуитивно понятным для любого пользователя.Но проблема в том, что я не уверен, каким образом я могу получить их в своих представлениях списков.

Я кратко рассмотрел фильтры django.Но я не уверен, может ли это помочь мне достичь аналогичных функций.

1 Ответ

0 голосов
/ 19 декабря 2018

Я думаю, вы можете попробовать вот так:

в шаблоне представления списка:

<form path="{% url 'your_list_view' %}" method="GET">
    <label for="search">Search: </label>
    <input type="text" name="search">
    <input type="submit" value="OK">
</form>

Теперь используйте это в ListView:

from django.db.models import Q

class YourListView(ListView):
   search_fields = ['name', 'something_else']
   ...
   def get_querset(self, *args, **kwargs):
       queryset = super(YourListView, self).get_queryset(*args, **kwargs)
       search = request.GET.get('search')
       if search:
          query = list()
          for f in self.search_fields:
              query.append(Q(**{f: search}))
          return queryset.filter(*query)
       return queryset
...