导入
设置并创建筛选条件
按照以下逐步说明,设置一个筛选功能,使用户能够在“房源列表”页面中查找特定房源。
我们将添加一个筛选功能,使用户能够在“房源”页面中查找特定的房源,从而避免不断向下滚动直到页面末尾。
Django 筛选设置
可以通过以下命令安装 django-filter:
1pip install django-filter
您无需自行安装,因为我们已为您提前配置好。
接下来,将 django_filters 包添加到 settings.py 文件中的 INSTALLED_APPS 配置项中。
1... 2 3INSTALLED_APPS = [ 4 'django.contrib.admin', 5 'django.contrib.auth', 6 'django.contrib.contenttypes', 7 'django.contrib.sessions', 8 'django.contrib.messages', 9 'django.contrib.staticfiles', 10 'listings', 11 'users', 12 'django_filters' 13] 14...
安装包时使用的是 django-filter,而在将其添加到 INSTALLED_APPS 时使用的是 django_filters。如果您对命名方式仍有疑问,请参考官方文档。
创建 filters.py
创建筛选功能的第一步是在 listings/ 目录下新建一个名为 filters.py 的文件。
...
创建 filters.py 后的 'listings' 应用文件夹目录结构
创建 filters.py 文件后,向其中添加以下代码:
1import django_filters 2from .models import Listings 3 4 5class ListingFilter(django_filters.FilterSet): 6 class Meta: 7 model = Listings 8 fields = ['condition', 'city', 'state']
在 第 1 行,我们导入 django_filters,以便在网站中实现筛选功能。
在 第 2 行,我们导入要操作的模型,即 Listings 模型。我们将基于该模型中的部分字段进行筛选。
在 第 5 行 使用 django_filters.FilterSet 为指定模型生成筛选器。最后,在 第 8 行 指定用户可搜索的字段。目前我们选择了 condition、city 和 state。