当前位置: 首页 > 知识库问答 >
问题:

在queryset django REST框架上返回NoneType

慕容成和
2023-03-14

我遇到了这样的错误:

回溯:

文件“/usr/local/lib/python2.7/dist packages/django/core/handlers/exception.py”,位于内部41。响应=获取响应(请求)

文件“/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py”,位于_-get_-response 187中。回应=自我。通过中间件处理异常(e,请求)

文件“/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py”,位于_-get_-response 185中。响应=包装的回调(请求,*回调参数,**回调参数

包装视图58中的文件“/usr/local/lib/python2.7/dist packages/django/views/decorators/csrf.py”。返回视图函数(*args,**kwargs)

视图87中的文件“/usr/local/lib/python2.7/dist packages/rest\u framework/viewsets.py”。回归自我。调度(请求,*args,**kwargs)

在调度474中文件"/usr/本地/lib/python2.7/dist-包/rest_framework/views.py"。

handle_exception 434中的文件“/usr/local/lib/python2.7/dist packages/rest_framework/views.py”。自己引发未捕获异常(exc)

文件“/usr/local/lib/python2.7/dist packages/rest\u framework/views.py”,在dispatch 471中。响应=处理程序(请求、*args、**kwargs)

在列表42中的file"/usr/本地/lib/python2.7/dist-包/rest_framework/mixins.py"page=self.paginate_queryset(queryset)

在paginate_queryset172中的file"/usr/local/lib/python2.7/dist-pack/rest_framework/generics.py"返回self.paginator.paginate_queryset(queryset,self.request,view=Self)

paginate_queryset 311中的文件“/usr/local/lib/python2.7/dist packages/rest_framework/pagination.py”。自己count=\u get\u count(queryset)

文件“/usr/local/lib/python2.7/dist-packages/rest\u-framework/pagination.py”在_-get\u-count 54中。返回len(queryset)

异常类型: TypeError at /api/userprofiles/异常值:类型'NoneType'的对象没有len()

我只是想让人们在连接到api时获得自己的个人资料,所以与其应用UserProfile.objects.all,我想如果我使用UserProfile.objects.get(user=request.user).

但正如您所看到的,它不起作用,可能是因为分页出现了一些问题,因为它试图获取len(),但它获取的对象是NoneType,尽管我在获取查询集后打印了它,以确定它是否真的是NoneType,但它不是。

这是我的UserProfileViewSet:

class UserProfileViewSet(viewsets.ModelViewSet):
    """
    This viewset automatically provides `list`, `create`, `retrieve`,
    `update` and `destroy` actions.
    """
    # queryset = UserProfile.objects.all(user=request.user)
    serializer_class = UserProfileSerializer
    permission_classes = (permissions.IsAuthenticatedOrReadOnly,
                          IsOwnerOrReadOnly,)
    pagination_class = LimitTenPagination

    def get_queryset(self):
        try:
            queryset = self.request.user.profile.all() # UserProfile.objects.get(user=self.request.user)
            print queryset
        except:
            queryset = None
        return queryset   # UserProfile.objects.get(user=self.request.user)

    @detail_route(renderer_classes=[renderers.JSONRenderer])
    def perform_create(self, serializer):
        serializer.save(user=self.request.user)

共有1个答案

陆子航
2023-03-14

嗯,当我使用UserProfile时。物体。get(user=self.request.user)我得到的是一个对象,而我需要得到的是一个查询集。

因此,将queryset更改为queryset=UserProfile。物体。过滤器(用户=self.request.user)

 类似资料:
  • 我目前正在使用Django开发一个API。 但是,我想创建一个返回具有以下endpoint的当前用户的视图:。 为此,我创建了一个列表视图,并过滤了发出请求的用户的查询集。这行得通,但结果是一个列表,而不是一个单一的对象。结合分页,与其他endpoint相比,结果看起来太复杂和不一致了。 我也试图创建一个详细视图并过滤查询集,但是DRF抱怨我没有提供pk或slug。

  • 正如blogpost关于设计实用的RESTful API的最佳实践中所推荐的,我想在基于Django Rest框架的API中添加一个查询参数,该参数允许用户仅选择每个资源的字段子集。 序列化程序: 常规查询将返回所有字段。 具有参数的查询应仅返回字段的子集: 包含无效字段的查询应忽略无效字段或引发客户端错误。 这是不是可能的?如果没有,实现这一点最简单的方法是什么?是否有一个第三方包已经做到这一点

  • 我在postgres数据库中有这样的数据 我想创建rest api来像这样返回嵌套的json ] 目前,我只能为每条记录返回普通json,但我想分组并返回嵌套json,如有任何帮助,将不胜感激 下面是我的代码model.py views.py 序列化程序.py

  • 在Spring有什么方法可以达到同样的效果。 我确实在这里查看了@cacheable http://www.baeldung.com/spring-cache-tutorial 但是我无法理解我是如何使spring使用我的“memcached”类的,更具体地说,我在哪里连接我的“memcached”类,以便它可用于上面示例中的类“abc

  • 问题内容: 我正在尝试在我的django rest框架上应用此修复程序 将根元素添加到json响应(django-rest- framework) 但是我不确定如何在django rest框架上覆盖json序列化程序,任何帮助都将是很大的。 最终结果将是在Json上具有根节点名称,因为现在它只是一个没有根名称的对象数组,即 不是这样的 [{“ foo”:“ bar”}] 我需要像这样 {“ ele

  • 我最近在某人的电脑上被介绍到yii框架。我真的很喜欢这个框架,因此我很快就在我的ubuntu 16.04 LTS上安装了它。但从那以后,一直很难运行yii,我不知道为什么。首先我安装了作曲家, 然后我使用composer安装了composer资产插件 它生成了自动加载文件(至少终端是这么说的)。在安装Yi2基本和高级模板时,整个故事发生了变化。一些教程建议我使用此命令移动到localhost we