Django rest framework 在这种情况下,我如何将user=pk带入?我想根据用户';s位置

Django rest framework 在这种情况下,我如何将user=pk带入?我想根据用户';s位置,django-rest-framework,Django Rest Framework,我想把user=pk放在第三行,这是有注释的。我不反对将类从ListAPIview更改为APIview。在这种情况下如何实现pk?我尝试编写def get,但无法致电customer.location class ServiceProviderList(generics.ListAPIView): # customer = CustomerProfile.objects.get(user=3) # queryset = ProfileCompletion.objects.filt

我想把user=pk放在第三行,这是有注释的。我不反对将类从ListAPIview更改为APIview。在这种情况下如何实现pk?我尝试编写def get,但无法致电customer.location

class ServiceProviderList(generics.ListAPIView):
    # customer = CustomerProfile.objects.get(user=3)
    # queryset = ProfileCompletion.objects.filter(location__distance_lte=(customer.location,25))#all().order_by('-id')
    queryset = ProfileCompletion.objects.all()
    serializer_class=ProfilecompletioneSerializer
    filterset_class=SnippetFilter
    filter_backends = [DjangoFilterBackend,SearchFilter,OrderingFilter]
    filterset_fields = ['fullname', 'category','departments','services']
    search_fields = ['fullname', 'category__name','departments__dept_name','services__service_name']
    

您可以重写
get\u queryset
方法:

class ServiceProviderList(generics.ListAPIView):
    queryset = ProfileCompletion.objects.all()
    serializer_class=ProfilecompletioneSerializer
    filterset_class=SnippetFilter
    filter_backends = [DjangoFilterBackend,SearchFilter,OrderingFilter]
    filterset_fields = ['fullname', 'category','departments','services']
    search_fields = ['fullname', 'category__name','departments__dept_name','services__service_name']

    def get_queryset(self, *args, **kwargs):
        customer = CustomerProfile.objects.get(user=self.request.user)
        qs = super().get_queryset(*args, **kwargs):
        return qs.filter(
            location__distance_lte=(customer.location,25)
        ).order_by('-id')
类服务提供者列表(generics.ListAPIView):
queryset=ProfileCompletion.objects.all()
serializer\u class=ProfilecompletioneSerializer
filterset_class=代码段过滤器
过滤器\后端=[DjangoFilterBackend,SearchFilter,OrderingFilter]
filterset_字段=[“全名”、“类别”、“部门”、“服务”]
搜索字段=[“全名”、“类别名称”、“部门名称”、“服务名称”]
def get_queryset(self、*args、**kwargs):
customer=CustomerProfile.objects.get(user=self.request.user)
qs=super().get_queryset(*args,**kwargs):
返回qs.filter(
位置\距离\ lte=(客户位置,25)
).order_by('-id')
@Surya, 下午好其中一种方法是实现基于主键的操作。非常感谢

class EmployeeDetailView(generics.RetrieveUpdateDestroyAPIView):
    queryset = Employee.objects.all()
    serializer_class = EmployeeSerializer

您的
客户档案
有一个
位置
?谢谢。现在,如何按25公里的半径过滤列表?获取此错误。“在大地测量距离查询中,仅允许度单位的数值。”