因此,我想链接到具有过滤器的给定页面,并让它在单击搜索之前显示表中的每个项目,并且仅在输入错误时才停止显示项目。我的问题类似于以下问题,但有一些区别。 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 =
相同的行为。现在建议/总是给我一个空白清单
答案 0 :(得分:2)
最后找到了我遇到的同一问题的帖子(不知道为什么它从来没有出现在Google上),该问题已得到解决。就像在我的视图中添加“ strict = False”行一样简单。
这是我发现的问题,为我解答了这个问题: Display all record on django-filter page startup