Get_queryset() 缺少 1 个必需的位置参数:'request' 当我尝试按登录用户过滤对象时
Get_queryset() missing 1 required positional argument: 'request' when i'm trying to filter objects by logged in user
我正在尝试使用 django rest 框架在“设施列表页面”上列出用户拥有的所有设施并做出反应。我尝试了以下方法来实现这一点(admin_uid 是拥有该设施的用户的一对一字段):
class FacilityListView(ListAPIView):
permission_classes = [AllowAny]
serializer_class = FacilitySerializer
def get_queryset(self, request):
return Facility.objects.filter(admin_uid=self.request.user)
我收到这个错误:
姜戈 |查询集 = self.filter_queryset(self.get_queryset())
姜戈 |类型错误:get_queryset() 缺少 1 个必需的位置参数:'request'
这是我之前的工作,但列出了所有设施:
class FacilityListView(ListAPIView):
permission_classes = [AllowAny]
serializer_class = FacilitySerializer
def get_queryset(self):
return Facility.objects.all()
你可以做到
class FacilityListView(ListAPIView):
permission_classes = [IsAuthenticated]
serializer_class = FacilitySerializer
def get_queryset(self, request):
admin_uid = self.request.user.id
return Facility.objects.filter(admin_uid=admin_uid)
你必须做两件事:
首先 - get_queryset 函数只接受一个参数,self,因此从 fn 定义中删除 request。
其次 - 要获取登录用户详细信息,请添加 permission_class = [isAuthenticated]
对于未登录的用户,您可以创建具有权限的不同视图 class = allowany,因为您的过滤器对未经过身份验证的用户不起作用。
我正在尝试使用 django rest 框架在“设施列表页面”上列出用户拥有的所有设施并做出反应。我尝试了以下方法来实现这一点(admin_uid 是拥有该设施的用户的一对一字段):
class FacilityListView(ListAPIView):
permission_classes = [AllowAny]
serializer_class = FacilitySerializer
def get_queryset(self, request):
return Facility.objects.filter(admin_uid=self.request.user)
我收到这个错误:
姜戈 |查询集 = self.filter_queryset(self.get_queryset()) 姜戈 |类型错误:get_queryset() 缺少 1 个必需的位置参数:'request'
这是我之前的工作,但列出了所有设施:
class FacilityListView(ListAPIView):
permission_classes = [AllowAny]
serializer_class = FacilitySerializer
def get_queryset(self):
return Facility.objects.all()
你可以做到
class FacilityListView(ListAPIView):
permission_classes = [IsAuthenticated]
serializer_class = FacilitySerializer
def get_queryset(self, request):
admin_uid = self.request.user.id
return Facility.objects.filter(admin_uid=admin_uid)
你必须做两件事:
首先 - get_queryset 函数只接受一个参数,self,因此从 fn 定义中删除 request。
其次 - 要获取登录用户详细信息,请添加 permission_class = [isAuthenticated]
对于未登录的用户,您可以创建具有权限的不同视图 class = allowany,因为您的过滤器对未经过身份验证的用户不起作用。