【问题标题】:cant create filters in django project无法在 django 项目中创建过滤器
【发布时间】:2021-02-26 10:23:56
【问题描述】:

我想在项目中添加过滤器,但这个错误出现在 CMD 中

AttributeError: module 'rest_framework.filters' has no attribute 'DjangoFilterBackend'

项目名称 = 框架 ProjectApp 名称 = 框架

Views.py

from typing import Tuple
from django.shortcuts import render
from .serializer import TaskSerializers
from rest_framework import viewsets
from .models import Task
from rest_framework import filters
import django_filters

# Create your views here.
class myviewset(viewsets.ModelViewSet):
    queryset = Task.objects.all()
    serializer_class = TaskSerializers
    filter_backends =(filters.DjangoFilterBackend,filters.OrederingFilter)
    filter_fields=('completed',)
    ordering = ('-date_created')

已安装的应用:

INSTALLED_APPS = [
    'framework',
    'rest_framework',
    'django_filters',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

【问题讨论】:

    标签: python django filter django-rest-framework pycharm


    【解决方案1】:

    DjangoFilterBackend 类确实不是源自rest_framework.filters,而是源自django_filters.rest_framework 模块,因此您应该将其导入为:

    from typing import Tuple
    from django.shortcuts import render
    from .serializer import TaskSerializers
    from rest_framework import viewsets
    from .models import Task
    #     ↓ load from the django_filters module
    from django_filters.rest_framework import DjangoFilterBackend
    from rest_framework import filters
    import django_filters
    
    # Create your views here.
    class myviewset(viewsets.ModelViewSet):
        queryset = Task.objects.all()
        serializer_class = TaskSerializers
        filter_backends =(DjangoFilterBackend, filters.OrderingFilter)
        filter_fields=('completed',)
        ordering = ('-date_created',)

    为了使用它,您首先需要在虚拟环境中安装django-filter 包:

    pip install <b>django-filter</b>

    并将其添加到INSTALLED_APPS:

    # settings.py
    
    INSTALLED_APPS = [
        # …,
        'django_filters',
        # …
    ]

    【讨论】:

    • 现在 OrderingFilter 不起作用(((AttributeError:模块'rest_framework.filters'没有属性'OrederingFilter')))
    • @HAbdullah:那是因为你打错了。这是OrderingFilter,而不是Ored...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多