Django:基于类的视图中的 Django_filters

问题描述 投票:0回答:2

我问你是否知道如何放置这个过滤器:

class CoursesFilters(django_filters.FilterSet):
    class Meta:
        model   =  Courses
        exclude = ('description')  

在这个类视图中:

class CoursesList(ListView):
    model         = Courses    
    template_name = 'courses_list.html'  

我曾经使用基于函数的视图构建应用程序,这是我第一次使用基于类的视图。
有什么想法吗?

python django django-filter
2个回答
2
投票

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 }}


0
投票
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 }}
© www.soinside.com 2019 - 2024. All rights reserved.