django-фильтр получить набор запросов - PullRequest
0 голосов
/ 28 мая 2018

Я использую django-фильтр v1.1.0, django 1.11.Я хочу динамический фильтр для модели.Я создал filters.py, который содержит соответствующий конфиг для фильтров моделей. Этот сайт сообщает, что:

Он сгенерирует форму Django с полями поиска, а также вернет отфильтрованный QuerySet.

Здесь он ссылаетсядо SomeModelFilter функции.Я пытался применить функции len и objects к своему объекту, но он возвращает

AttributeError: 'SomeModelFilter' object has no attribute 'len'
AttributeError: 'SomeModelFilter' object has no attribute 'objects'

Я хочу получить отфильтрованный контент.Мне кажется, это не QuerySet.

filters.py

from project_app.models import *
import django_filters


class SomeModelFilter(django_filters.FilterSet):
    class Meta:
        model = SomeModel
        fields = ['field_a', 'field_b', 'field_c', 'field_d']

views.py

    somemodel_list = SomeModel.objects.all()
    somemodel_filter = SomeModelFilter(request.GET, queryset=somemodel_list)

    print(len(somemodel_filter)) # This gives the first error
    print(somemodel_filter.objects.all()) # This gives the second error

Я хочу получить отфильтрованный контент, который, как мы надеемся, содержится в somemodel_filter объекте.

1 Ответ

0 голосов
/ 28 мая 2018

Проблема в этой строке print(somemodel_filter.objects.all()).somemodel_filter - это не модель, это экземпляр набора фильтров, и поскольку у него нет атрибута objects.Чтобы получить отфильтрованный набор запросов, используйте атрибут qs, например:

print(somemodel_filter.qs)

Пример использования фильтра можно найти здесь .

...