【发布时间】:2022-01-15 23:45:32
【问题描述】:
我试图通过商店(点)获取位置(多边形)。我不想将位置的外键引用添加到商店模型中,而是想通过检查交叉点来获取位置。
class Shop(models.Model):
name = models.CharField(max_length=40)
location = PointField()
@property
def point(self):
return self.location.wkt
class Location(models.Model):
name = models.CharField(max_length=200)
area = PolygonField()
遍历位置我可以获得我需要的东西,但是我正在寻找更好的方法。
for i in Location.objects.all():
print(Shop.objects.filter(location__intersects = i.area))
## output:
<QuerySet [<Shop: Shop object (1)>, <Shop: Shop object (2)>, <Shop: Shop object (4)>]>
<QuerySet [<Shop: Shop object (3)>]>
我尝试使用子查询,但遍历完整的 Location 查询集返回错误 more than one row returned。所以我将限制设置为 1。
loc=Location.objects.all()
shp=Shop.objects.filter(location__intersects=Subquery(loc.values('area')[:1]))
我想将相交的位置附加到我的查询集。
【问题讨论】:
标签: django django-queryset postgis geodjango