我问你是否知道如何放置这个过滤器:
class CoursesFilters(django_filters.FilterSet):
class Meta:
model = Courses
exclude = ('description')
在这个类视图中:
class CoursesList(ListView):
model = Courses
template_name = 'courses_list.html'
我曾经使用基于函数的视图构建应用程序,这是我第一次使用基于类的视图。
有什么想法吗?
django-filters
有一个 FilterView
[readthedocs.io] 可以使用:
from django_filters.views import FilterView
class CoursesList(FilterView):
model = Courses
template_name = 'courses_list.html'
filterset_class = CoursesFilters
filterset_class
指定FilterSet
。过滤器作为 filter
传递到模板。因此,您可以在模板中渲染 {{ filter.form }}
。
class CoursesList(ListView):
model = Courses
template_name = 'courses_list.html'
def get_context_data(self, **kwargs: any):
context = super().get_context_data(**kwargs)
context['filter'] = CoursesFilters(self.request.GET,
queryset=self.get_queryset())
return context
def get_queryset(self):
return self.object.courses_set.all()
courses_list.html
{{ filter.form.as_p }}