【问题标题】:How to find User queryset matching self.request.user如何查找与 self.request.user 匹配的用户查询集
【发布时间】:2017-09-29 02:43:28
【问题描述】:

我们如何找到匹配 self.request.user 的用户查询集?

logged_in_user = User.objects.filter(id=self.request.user.id)

我希望有很多有效的方法来做到这一点。 (例如 get_user_model(self.request.user))?

这是我的意见.py

class ProfilePageView(generics.RetrieveAPIView):
    serializer_class = ProfilePageSerializer

    def get_queryset(self):
        logged_in_user = User.objects.filter(username=self.request.user.username) << right here!
        return logged_in_user

    def get_object(self):
        queryset = self.get_queryset()
        obj = get_object_or_404(queryset)
        return obj

【问题讨论】:

  • 哦,我可以像logged_in_user = self.request.user一样使用它吗?
  • 查询集不是对象!

标签: django django-models django-views


【解决方案1】:

当您已经拥有用户实例时,没有理由获取其中只有一个用户实例的查询集:

logged_in_user = self.request.user

【讨论】:

  • 收到此错误。 get_object_or_404() 的第一个参数必须是模型、管理器或查询集,而不是“用户”。
  • 也许我应该将 self.request.user 转换为 queryset..??
  • 我在您的问题中没有看到任何 get_object_or_404 用法。
  • 哦,我收到了queryset。是的,它必须完全执行 User.objects.filter(id=self.request.user.id)。
  • self.requset.user 是对象模型而不是查询集
【解决方案2】:

对你有帮助吗?

def get_object(self):
    return self.request.user

【讨论】:

  • 谢谢..!投票赞成
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-09
  • 2019-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-23
  • 1970-01-01
相关资源
最近更新 更多