Django和Google App Engine的地理空间查询 - 如何克服“一次只能使用一个不等式”的问题?

2 投票
1 回答
622 浏览
提问于 2025-04-16 13:37

我刚开始使用Google App Engine(GAE),遇到了一个问题,让我开始怀疑在GAE上使用Django是否可行。

我只是想用Django的ORM做一个简单的查询:

addresses = Address.objects.filter(lat__gte=form.cleaned_data['north_east_lat'])
addresses = addresses.filter(lat__lte=form.cleaned_data['south_west_lat'])
addresses = addresses.filter(lon__gte=form.cleaned_data['north_east_lon'])
addresses = addresses.filter(lon__lte=form.cleaned_data['south_west_lon'])

但显然在使用Bigtable时,这并没有那么简单:

BadFilterError: 无效的过滤器:每个查询中只能有一个属性使用不等式过滤器(<=, >=, <, >)。

我该如何解决这个问题呢?(最好还是用Django的ORM)

1 个回答

3

很遗憾,我不知道有什么简单的方法可以用Django的ORM来解决这个问题。不过,你可以在Google App Engine上进行地理空间查询(包括像你例子中那样的边界框查询)。想了解更多细节,可以查看这篇文章:使用GeoModel在Google App Engine上进行地理空间查询

撰写回答