python-3.x - 无法在 DRF 的 get 函数中返回查询
问题描述
我必须插入距离作为输入参数并处理此代码。但我无法返回查询。当我跑步时,程序要求距离。
{
"distance": [
"This field is required."
]
}
我的代码如下:
from django.contrib.gis.geos import Point
from django.contrib.gis.measure import D
from Admin_Section.models import Distance
class ServiceProviderList(generics.ListAPIView):
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):
pk=self.kwargs.get('pk')
qs = CustomerProfile.objects.filter(user=pk)
if qs.exists():
customer = qs.first()
else:
return qs.none()
def get(self,request,*args, **kwargs):
pk=self.kwargs.get('pk')
customer = CustomerProfile.objects.get(user=pk)
serializer = DistanceSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
Dist = serializer.validated_data['distance']
print(Dist)
rad=float(Dist)
radius=rad/111
print(radius)
query = ProfileCompletion.objects.filter(location__distance_lte=(customer.location,radius))
return query
解决方案
在GET
请求正文中发送有效负载不是一个好主意。你的问题不是很清楚,但是看代码,如果你想使用查询集中的distance
数据来过滤,你应该使用查询参数。您可以使用从客户端发送 URL 中的查询参数,some-url?distance=10
这些可以在视图中读取,使用request.query_params
这将是一个dict
查询参数。
推荐阅读
- java - 没有明显原因的休眠映射错误
- sqlite - Microsoft.WindowsAzure.MobileServices.MobileServiceClient.PullAsync 的“安全句柄已关闭”错误
- apache-spark - Apache Spark:如何“缓存”数据集,使其不会重新计算以进行下一次计算
- linux-kernel - arch/arm64/Makefile:27: ld 不支持 --fix-cortex-a53-843419;内核可能容易出现错误
- python-3.x - ValueError:RGBA 参数无效。为什么会这样?我该如何解决?
- php - 如何在不影响表格行样式的情况下将表格行显示为表单输入
- python - 将孩子定位在窗格窗口内
- xml - 在 XSD 的扩展中添加对元素的限制
- typescript - Typescript React Native navigation.push 输入错误
- azure - 使用 C# 从 Azure 存储中删除 Blob