将列表传递给 geodjango 多面体查找

Pass a list to geodjango multipolygon lookup

我有如下要点列表:

points_list = [<Point object at 0x7f92b96103c8>, <Point object at 0x7f92b96105e8>]

现在我想使用这个列表来过滤 MultipolygonField。我无法将整个列表传递给多面体查找,因为出现错误,Tuple too long for lookup covers

现在我所做的只是遍历列表并将过滤后的多边形对象保存在新列表中,例如:

说下面的geom是一个multipolygon字段

multipolygon_list = []
for point in points_list:
    dam_obj = DAM.objects.filter(geom__contains=point).values_list('id', flat=True)
    multipolygon_list.append(dam_object)

现在我想要的是删除上面的循环,所有这一切都是一个查询。有没有办法删除它? 比如我不能做下面这样的事情吗?

DAM.objects.filter(geom__contains=points_list)...

在找到解决方案时回答我自己的问题。 所以我想删除循环。

我合并了点列表并创建了一个 Multipoint 然后将该多点传递给查找。

from django.contrib.gis.db.models import Union
single_multipoint = Union(points_list)

# pass the single multipoint to the lookup.
DAM.objects.filter(geom__contains=single_multipoint)