django-rest-framework - 在这种情况下,我怎样才能带上 user=pk ?我想根据用户的位置列出
问题描述
我想将 user=pk 放在已注释的第 3 行中。将类从 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_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')
推荐阅读
- javascript - style.display="none"; 不适用于 javascript DOM
- azure - Azure 函数队列触发器:队列消息在被 Azure 函数间歇性选中之前就丢弃了
- laravel - 命令“备份:运行”不存在
- javascript - For循环,即使显示多次,也只删除1个值|| 不和谐.js
- javascript - Bootstrap 5:使用 javascript 显示模式
- babeljs - babel AST 遍历中的竞争条件
- java - 迭代里面
- 标签 Java - Jsoup
- sqlite - 如何打开 db.sqlite3 文件并查看其内容?
- c++ - 如何将stl容器保存在磁盘中?
- javascript - 如何将 href 按钮添加到 elseif 语句