Django过滤器FilterView在页面加载时显示空列表

时间:2018-11-28 19:04:48

标签: django django-filter

因此,我想链接到具有过滤器的给定页面,并让它在单击搜索之前显示表中的每个项目,并且仅在输入错误时才停止显示项目。我的问题类似于以下问题,但有一些区别。 Empty result list on django-filter page startup

作为发布者默认行为的区别是我期望的行为,并且我使用的是基于类的视图,而不是功能视图。

我的网址:

from django.urls import path

from . import views

app_name = 'advising'
urlpatterns = [

    path('', views.MyList.as_view(), name='MyList'),

]

我的观点:

from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render, get_object_or_404
from django.views import generic
from django.template import loader
from .models import *
from django_filters.views import FilterView
from .filter import *

class MyList(FilterView):

    template_name = 'advising/MyList.html'
    context_object_name = 'tables'
    filterset_class = MyFilter

    def get_queryset(self):
        return Table.objects.order_by('Name')

我的过滤器:

import django_filters
from .models import Table

class MyFilter(django_filters.FilterSet):
    Name = django_filters.CharFilter(lookup_expr='icontains')

    class Meta:
        model = Table   #The table this form will reference 
        fields = ["Name"]

我的模板:

    <form  method="get">
    {{ filter.form.as_p }}
    <button type="submit">Search</button>
  </form>

    {% if tables %}
        <ul>
        {% for table in tables %}
            <li>{{table}}</a></li>
        {% endfor %}
            </ul>
    {% else %}
        <p>Nothing to see here!.</p>
    {% endif %}

有什么方法可以模仿页面首次加载时搜索空字符串的行为吗?

具体来说,我希望url advising /具有与url advising /?Name =

相同的行为。

现在建议/总是给我一个空白清单

1 个答案:

答案 0 :(得分:2)

最后找到了我遇到的同一问题的帖子(不知道为什么它从来没有出现在Google上),该问题已得到解决。就像在我的视图中添加“ strict = False”行一样简单。

这是我发现的问题,为我解答了这个问题: Display all record on django-filter page startup