我正在尝试使用Django REST Framework将GeoQuerySet序列化为JSON。我是Django的新手,对数据库知之甚少,所以任何帮助都会非常感激。
我一直在努力解决这个问题一整天。
以下是我要做的事情:
class PointView(generics.ListAPIView):
serializer_class = MyEntityModelSerializer
def post(self, request, *args, **kwargs):
"""
Enter description
here
"""
entity=EntityType.objects.exclude(point=None)[0]
lon=request.data['lng']
lat=request.data['lat']
radius_km=request.data['radius_km']
within_radius=entity.is_near(lat,lon,radius_km)
return within_radius
这是我的错误消息:
AssertionError at /point/
Expected a `Response`, `HttpResponse` or `HttpStreamingResponse` to be returned from the view, but received a `<class 'django.contrib.gis.db.models.query.GeoQuerySet'>`
答案 0 :(得分:0)
解决方案!事实证明,POST是为更新数据而设计的,我只是想获取数据。
Django REST框架(DRF)是根据标准构建的,因此我试图强制实施的行为不是框架设计要做的事情。
以下是适合我的解决方案:
class PointView(generics.ListAPIView):
serializer_class = MyEntityModelSerializer
def get_queryset(self):
"""
Enter description
here
"""
params = self.request.query_params
entity=EntityType.objects.exclude(point=None)[0]
lon=float(params['lng'])
lat=float(params['lat'])
radius_km=float(params['radius_km'])
within_radius=entity.is_near(lat, lon, radius_km)
return within_radius
感谢irc.freenode.net/django上的bibhas和tbaxter,他指出了我的想法中的错误:GET-Styled POST-Requests是所以不是HTTP / 1.1 。