我有Foo
和Bar
型号。每个模型都有一个GeoDjango point
属性。我想返回一个查询集,其中包含任何 Bar
半径2公里范围内的所有Foo
个。大约有5000 Foo
s和900 Bar
s因此任何详尽的解决方案都需要很长时间,例如我目前的解决方案:
query = Q()
radius = 2
for foo in Foo.objects.iterator():
if foo.point:
point = foo.point
query = query | Q(point__distance_lt=(point, radius))
bars = Bar.objects.filter(query)
有更快的方法吗?或者我犯了哪些错误使其无法估量?