S.D*_*S.D 5 python django django-filter
我有一个过滤器:
class BookFilter(django_filters.FilterSet):
class Meta:
model = Book
fields = '__all__'
Run Code Online (Sandbox Code Playgroud)
和一个 ListView 来查看结果:
class SearchResultsListView(ListView):
model = Book
context_object_name = 'book_list'
template_name = 'book/search_results.html'
Run Code Online (Sandbox Code Playgroud)
我想要一个搜索表单,您可以在其中根据类的所有字段进行过滤(例如,X 写的所有书籍超过 3 颗星)。
如何将表单传递给模型,以及如何根据需要使用 get 请求通过 django-filter 进行过滤?
我正在使用 Django 3.0 和 django-filter 2.2.0
我认为所有内容都在Generic view & configuration部分下的django-filter文档中得到了很好的记录。
该班是类似Django的,你可以用它来筛选结果。django_filters.views.FilterViewListView
from django_filters.views import FilterView
class SearchResultsListView(FilterView):
model = Book
context_object_name = 'book_list'
template_name = 'book/search_results.html'
filterset_class = BookFilter # ADD YOUR filterset class
Run Code Online (Sandbox Code Playgroud)
并按照此处所述对您的book/search_results.html模板进行一些更改,
{% extends "base.html" %}
{% block content %}
<form action="" method="get">
{{ filter.form.as_p }}
<input type="submit" />
</form>
{% for obj in filter.qs %}
{{ obj.name }} - ${{ obj.price }}<br />
{% endfor %}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
SearchResultsListView通过继承FilterView类更新类filterset_class属性添加到您的SearchResultsListView视图类FilterView类自动添加filterset_class类中的get_context_data(...)方法filter的关键,它可以在模板访问后。filter.qs在您的模板中使用以获取过滤的查询集| 归档时间: |
|
| 查看次数: |
2851 次 |
| 最近记录: |