2013-09-24 4 views
1

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

queryset = Fitzroyfalls.objects.select_related().all() 
f = FitzroyfallsFilter(request.GET, queryset=queryset) 
table = FitsroyFallsTable(f.queryset) 
table.paginate(page=request.GET.get('page', 1), per_page=25) 
RequestConfig(request).configure(table) 
return render(request, 'query.html', {'table': table}) 

, но ничего не происходит, он отображает только таблицу со всеми данными.

ответ

1

После нескольких часов попытки, я получил решение, которое просто. По мнению добавить эти строки:

if request.method == "GET" 
    list1=list() 
    for obj in f: 
     list1.append(obj) 
    table=FitsroyFallsTable(list1) 

aaand это все!

0

таблица = FitsroyFallsTable (f.qs)

+1

Вы можете добавить некоторые подробно? – mjk

+0

@mjk см. Мой ответ, он работает! это неправильно! – user2137817

2

Я проверил метод __iter__ для FilterSet и он в основном обращается к propertyqs. Поэтому ответ @ huiming работает для меня. Я приспособил свой код следующим образом:

queryset = Fitzroyfalls.objects.select_related().all() 
f = FitzroyfallsFilter(request.GET, queryset=queryset) 
table = FitsroyFallsTable(f.qs) 
RequestConfig(request, paginate={"per_page": 25, "page": 1}).configure(table) 
return render(request, 'query.html', {'table': table, 'filter': f}) 

Я использую:

django-filter==0.7 
django-tables2==0.14.0 
Django==1.6 
0

Для ОЦК:

class FilteredSingleTableView(FilterView, SingleTableView): 

    def get_table_data(self): 
     data = super(FilteredSingleTableView, self).get_table_data() 
     return data if self.object_list is None else self.object_list 

Использование:

class UserList(FilteredSingleTableView): 
    template_name = 'accounts/users_list.html' 
    model = User 
    table_class = UserTable 
    paginate_by = 10 
    filterset_class = UserFilter 
Смежные вопросы