Как вернуть None, если не сделан запрос с использованием django-фильтра - PullRequest
0 голосов
/ 12 марта 2019

Здравствуйте, я немного озадачен тем, как этого добиться.У меня есть фильтр, созданный с помощью метода django filter () , и по умолчанию он возвращает список объектов в базе данных. Я не хочу отображать список до тех пор, пока не будет создан фильтр / поиск, как мне поступитьоб этом?

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

Существует необязательный мета-аргумент 'строгий' в FilterSet, который определяет поведение, если набор фильтров недопустим, как указано в документации здесь

from django_filters import FilterSet, STRICTNESS

class ProductFilter(FilterSet):
    class Meta:
        model = Product
        fields = ['name', 'release_date']
        strict = STRICTNESS.RETURN_NO_RESULTS

FilterView также определяет логику для фильтрации, при которой результаты не должны возвращаться, если для FilterView установлено значение true = True, или набор фильтров недопустим или ограничен, он расположен здесь

0 голосов
/ 12 марта 2019

Вы можете просто проверить URL Получить параметр перед фильтром.

Вот пример использования представлений на основе функций.Здесь модель Article имеет поле title и значение title проверяется в параметрах get.Если нет, просто верните пустой список

class ArticleListView(FilterView):
    model = Article
    template_name = 'post/article_list.html'
    filterset_class = ArticleFilter


def article_search(request):
    user_list = Article.objects.all()
    if request.GET.get('title'):
        # Add more logics based on your needs
        user_filter = ArticleFilter(request.GET, queryset=user_list)
        return render(request, 'post/article-list-filter.html', {'filter':user_filter})
    return render(request, 'post/article-list-filter.html', {'filter':[]})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...