如何使用基于类的视图和django-filter的简单示例?

hum*_*um3 6 django-views django-filter django-class-based-views

文档中的示例https://django-filter.readthedocs.org/en/latest/usage.html,我认为是基于函数的视图.我目前正在研究如何使用基于类的视图执行此操作.

def product_list(request):
f = ProductFilter(request.GET, queryset=Product.objects.all())
return render_to_response('my_app/template.html', {'filter': f})
Run Code Online (Sandbox Code Playgroud)

hum*_*um3 10

多挖一点,我设法回答了它.我使用了这里的代码https://github.com/rasca/django-enhanced-cbv.

我将内容添加list.py到我的主应用程序中main_app/filter_mixin.py

然后在应用程序中我添加搜索到列表视图我添加了filter.py这样的文件(与文档相同)

from django_filters import FilterSet
from .models import Contact


class ContactFilter(FilterSet):
    class Meta:
        model = Contact
        fields = ['name_first', 'name_last']
Run Code Online (Sandbox Code Playgroud)

现在view.py变成:

from vanilla import ListView

from .filter import ContactFilter
from galleria.filter_mixin import ListFilteredMixin


class ContactList(ListFilteredMixin, ListView):
    filter_set = ContactFilter
Run Code Online (Sandbox Code Playgroud)