如何在 Django 中按自定义区域过滤位置?

How to filter locations by custom area in django?

我允许用户在前端(flutter)绘制他的自定义区域并将其传递给后端(django +postgis),后端必须 return PointField 列表位于其中曲线。那么,我应该以哪种格式将曲线传递给后端以及如何正确过滤地点查询集?

假设您的模型定义为

class Place(models.Model):
    location = PointField()

您应该能够使用 the within lookup 来检索位置包含在用户提供的几何图形中的所有地点

Place.objects.filter(location__within=geometry)

我建议您从前端将用户选择导出为 GeoJSON,然后 POST 将其导出到后端。在 Django 方面,您应该能够 create a GEOSGeometry from the provided data

geometry = GEOSGeometry(request.POST['selection'])
Place.objects.filter(location__within=geometry)

您需要验证 selection 是否有效 GeoJSON 但这至少应该让您入门。