首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DRF default_manager错误?

DRF default_manager错误?
EN

Stack Overflow用户
提问于 2016-10-26 11:10:31
回答 1查看 538关注 0票数 0

我的基于DRF的API抛出了一个错误,我似乎无法解决,因为它不表明错误来自我的代码。

代码语言:javascript
复制
Traceback (most recent call last):
  File "/opt/venv/drf_app/lib/python3.5/site-packages/django/core/handlers/exception.py", line 39, in inner
    response = get_response(request)
  File "/opt/venv/drf_app/lib/python3.5/site-packages/django/core/handlers/base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/opt/venv/drf_app/lib/python3.5/site-packages/django/core/handlers/base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/opt/venv/drf_app/lib/python3.5/site-packages/django/views/decorators/csrf.py", line 58, in wrapped_view
    return view_func(*args, **kwargs)
  File "/opt/venv/drf_app/lib/python3.5/site-packages/rest_framework/viewsets.py", line 83, in view
    return self.dispatch(request, *args, **kwargs)
  File "/opt/venv/drf_app/lib/python3.5/site-packages/rest_framework/views.py", line 477, in dispatch
    response = self.handle_exception(exc)
  File "/opt/venv/drf_app/lib/python3.5/site-packages/rest_framework/views.py", line 437, in handle_exception
    self.raise_uncaught_exception(exc)
  File "/opt/venv/drf_app/lib/python3.5/site-packages/rest_framework/views.py", line 448, in raise_uncaught_exception
    raise exc
  File "/opt/venv/drf_app/lib/python3.5/site-packages/rest_framework/views.py", line 474, in dispatch
    response = handler(request, *args, **kwargs)
  File "/opt/venv/drf_app/lib/python3.5/site-packages/rest_framework/mixins.py", line 40, in list
    queryset = self.filter_queryset(self.get_queryset())
  File "/opt/venv/drf_app/lib/python3.5/site-packages/rest_framework/generics.py", line 151, in filter_queryset
    queryset = backend().filter_queryset(self.request, queryset, self)
  File "/opt/venv/drf_app/lib/python3.5/site-packages/django_filters/rest_framework/filterset.py", line 28, in __init__
    super(FilterSet, self).__init__(*args, **kwargs)
  File "/opt/venv/drf_app/lib/python3.5/site-packages/django_filters/filterset.py", line 284, in __init__
    queryset = self._meta.model._default_manager.all()
AttributeError: 'NoneType' object has no attribute '_default_manager'

是rest框架代码中的错误还是来自其他地方?

仅供参考,django管理端工作正常。

下面是正在使用的模型和序列化程序:

代码语言:javascript
复制
class ListCreateRetrieveUpdateViewSet(mixins.ListModelMixin, mixins.CreateModelMixin,
                                      mixins.RetrieveModelMixin, mixins.UpdateModelMixin,
                                      viewsets.GenericViewSet):
    """
    A viewset that provides `list`, `create`, `retrieve`, `update` actions.
    """
    pass


class BaseModel(models.Model):
    """
    An abstract base class model that provides self updating
    ``created`` and ``modified`` fields.
    """
    created_on = models.DateTimeField(auto_now_add=True, editable=False)
    created_by = models.ForeignKey(settings.AUTH_USER_MODEL,
                                   related_name="%(app_label)s_%(class)s_created_by", editable=False)
    modified_on = models.DateTimeField(auto_now=True, editable=False)
    modified_by = models.ForeignKey(settings.AUTH_USER_MODEL,
                                    related_name="%(app_label)s_%(class)s_modified_by", editable=False)
    is_deleted = models.BooleanField(default=False, verbose_name='Delete Entry')
    deleted_on = models.DateTimeField(null=True, blank=True, editable=False)
    deleted_by = models.ForeignKey(settings.AUTH_USER_MODEL, related_name="%(app_label)s_%(class)s_deleted_by",
                                   null=True, blank=True, editable=False)

    class Meta:
        abstract = True

class Country(BaseModel):
    """
    List of Countries
    """
    code = models.CharField(max_length=3, unique=True)
    title = models.CharField(max_length=100, unique=True)

    def __str__(self):
        return '{} - {}'.format(self.code, self.title)

class CountrySerializer(serializers.ModelSerializer):
    """Serialize model"""

    class Meta:
        model = Country

class CountryViewSet(viewsets.ReadOnlyModelViewSet):
    """
    list and create countries
    """
    end_point_name = 'CoreApp'
    queryset = Country.objects.all()
    serializer_class = CountrySerializer
    filter_fields = ('id',)
EN

回答 1

Stack Overflow用户

发布于 2016-10-28 18:19:59

我今天遇到了一个类似的问题:似乎从DRF3.5开始,filters classes have completely moved to django-filter package。我修正了我的import语句,一切都很顺利。希望能对你有所帮助!

内置DjangoFilterBackend的功能现在完全包含在django-filter包中。

您应该更改导入和REST框架筛选器设置,如下所示:

rest_framework.filters.DjangoFilterBackend变成了django_filters.rest_framework.DjangoFilterBackendrest_framework.filters.FilterSet变成了django_filters.rest_framework.FilterSet

现有的导入将继续工作,但现在正在等待弃用。

在我的例子中,最后一句话是错误的,它不起作用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40253055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档