Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
属性错误:';模块';对象没有属性';DjangoFilterBackend';_Django_Django Filter - Fatal编程技术网

属性错误:';模块';对象没有属性';DjangoFilterBackend';

属性错误:';模块';对象没有属性';DjangoFilterBackend';,django,django-filter,Django,Django Filter,我正在使用django filter,但我得到以下错误:“module”对象没有属性“django FilterBackend” 我在下面发送我的代码: Model.py from django.db import models # Create your models here. class searchModel(models.Model): email = models.CharField(max_length=25) password = models.Char

我正在使用django filter,但我得到以下错误:“module”对象没有属性“django FilterBackend” 我在下面发送我的代码:

Model.py

    from django.db import models

# Create your models here.
class searchModel(models.Model):
    email = models.CharField(max_length=25)
    password = models.CharField(max_length=10)
    image    = models.ImageField(upload_to='Image/')

    def __str__(self):
        return "%s" %  self.email
序列化程序.py

from rest_framework import serializers
from .models import searchModel

class searchserializer(serializers.ModelSerializer):
    image = serializers.ImageField(max_length=None, use_url=True)

    class Meta:
        model=searchModel
        fields=('email','password','image')
from rest_framework import viewsets
from .models import searchModel
from .serializers import searchserializer
#from django_filters.rest_framework import filters
from rest_framework import filters

class searchView(viewsets.ModelViewSet):
    queryset=searchModel.objects.all()
    serializer_class = searchserializer
    filter_backends = (filters.DjangoFilterBackend,filters.OrderingFilter,)
    filter_fields = ('email')
    ordering = ('email')
视图.py

from rest_framework import serializers
from .models import searchModel

class searchserializer(serializers.ModelSerializer):
    image = serializers.ImageField(max_length=None, use_url=True)

    class Meta:
        model=searchModel
        fields=('email','password','image')
from rest_framework import viewsets
from .models import searchModel
from .serializers import searchserializer
#from django_filters.rest_framework import filters
from rest_framework import filters

class searchView(viewsets.ModelViewSet):
    queryset=searchModel.objects.all()
    serializer_class = searchserializer
    filter_backends = (filters.DjangoFilterBackend,filters.OrderingFilter,)
    filter_fields = ('email')
    ordering = ('email')

使用来自的建议导入,您将执行以下操作:

import django_filters.rest_framework

class searchView(viewsets.ModelViewSet):
    ...
    filter_backends = (django_filters.rest_framework.DjangoFilterBackend,filters.OrderingFilter,)
或者,你也可以这样做

from django_filters.rest_framework import DjangoFilterBackend

class searchView(viewsets.ModelViewSet):
    ...
    filter_backends = (DjangoFilterBackend, filters.OrderingFilter,)
它会对你有用的 检查以下代码:

from django_filters.rest_framework import DjangoFilterBackend
from rest_framework import filters

class TaskViewSet(viewsets.ModelViewSet):
  queryset = Task.objects.all().order_by('-date_created')
  serializer_class = TaskSerializers
  filter_backends = (DjangoFilterBackend, filters.OrderingFilter)

使用此导入将执行以下操作:

import django_filters.rest_framework
filter_backends = (django_filters.rest_framework.DjangoFilterBackend,)

相同-原因是FilterSet是django_过滤器的一部分,而不是rest_Framework,因此:

删除“从rest_框架导入过滤器”行 。。。
从django_filters导入FilterSet、AllValuesFilter、DateTimeFilter、NumberFilter

如果您只想通过电子邮件进行筛选,可以覆盖搜索视图中的get_queryset。“不工作”没有足够的信息来帮助您。从rest\u框架从导入视图集。模型从导入searchModel。序列化程序从django\u过滤器导入searchserializer#从django\u过滤器。rest\u框架从django\u过滤器导入过滤器。rest\u框架从rest\u框架导入过滤器类searchView(ViewSet.ModelViewSet):queryset=searchModel.objects.all()序列化程序\u类=searchserializer筛选器\u后端=(DjangoFilterBackend,filters.OrderingFilter)筛选器\u字段=('email')排序=('email')