Отсутствует объект filterset в контексте с использованием django-tables2 и django-filter - PullRequest
0 голосов
/ 20 октября 2018

Я пытался создать представление с панелью фильтров и таблицей пользователей.
Я использую библиотеки django-tables2 и django-filter, и у меня есть это представление:

class UserListView(SingleTableView, FilterView):
    model = User
    template_name = 'admin/users.html'
    table_class = AdminUserTable
    filterset_class = UserFilter
    paginate_by = 10

Однако проблема заключается в том, что в data-context объекте набора фильтров не отправлено шаблону, а в самом фильтре UserListView.
я не пытался заменить SingleTableView, FilterView на FilterView, SingleTableView, а затем он проходитОбъект filterset под filter вводит контекст в контексте шаблона, однако в этом случае, когда я захожу на страницу без параметров фильтра в URL, он показывает пустой список.Но если я вставлю ?search= в URL, он покажет всех пользователей, и фильтрация работает нормально.

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

У меня была такая же проблема, и я нашел в документе атрибут "strict": https://django -filter.readthedocs.io / en / stable / ref / filterset.html # strict , но это действительнотолько для версии 1.11.

Изменение для версии 2 задокументировано в: https://github.com/carltongibson/django-filter/pull/788

, поэтому добавление строгого = False к вашему представлению должно помочь:

class UserListView(SingleTableView, FilterView):
    model = User
    template_name = 'admin/users.html'
    table_class = AdminUserTable
    filterset_class = UserFilter
    paginate_by = 10
    strict=False
0 голосов
/ 20 октября 2018

Я нашел решение:

def get_table_data(self):
    return self.filterset.qs

Мне это не нравится, но оно работает.Я считаю, что есть лучшее решение.

...