【发布时间】:2019-04-30 18:32:15
【问题描述】:
所以我想链接到具有过滤器的给定页面,并让它在我单击搜索之前显示表中的每个项目,并且仅在给出错误输入时才停止显示项目。我的问题类似于以下问题,但有一些区别。 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=
相同的行为现在建议/总是给我一个空列表
【问题讨论】:
标签: django django-filter