繁体   English   中英

Django Rest Framework - 如何限制Geolocation返回的结果?

[英]Django Rest Framework - How do I limit results returned with Geolocation?

我有一个存储用户位置的模型:

[
{
    "url": "http://192.168.0.22:8000/status/1/",
    "id": 1,
    "owner": 1,
    "test_info": "",
    "created_at": "2015-05-02T07:09:16.535689Z",
    "updated_at": "2015-05-02T07:09:16.535746Z",
    "geolocation": null,
    "jukebox_mode_enabled": false
},
{
    "url": "http://192.168.0.22:8000/status/2/",
    "id": 2,
    "owner": 2,
    "test_info": "",
    "created_at": "2015-05-02T07:09:24.206959Z",
    "updated_at": "2015-05-02T07:09:24.207042Z",
    "geolocation": null,
    "jukebox_mode_enabled": false
},

我正在尝试实现一个允许用户查询并查看附近还有谁的系统,但出于安全考虑,我希望将结果限制为1KM的用户。

实现这一目标的最佳方法是什么?

PS - 使用oneToOneField将“状态”绑定到django模型中的普通用户模型。

您正在寻找的是通过地理位置查询/过滤的能力。 看看GeoDjango吧

一旦你可以运行具有地理范围的模型过滤器(),那么只需将其应用于带有django-rest-framework的APIView。

有两件事,你应该使用Django的GIS(GeoDjango)功能和Django REST框架的GIS插件

GeoDjango将本地使用您的数据库(可能是PostGIS )来准确存储和表示地理空间数据。 这意味着您不必担心将位置标准化,因为它们是给您的,并且您不必手动处理过滤 - 例如在半径中查找位置

GIS插件提供DistanceToPoint过滤器听起来就像您正在寻找的那样。 您可以传递米数以及要用作中心的点,它将删除超出该范围的任何结果。 这将允许您使用Django REST框架的内置视图和序列化程序,而无需处理查询集并自行应用过滤。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM