嗨 Stackoverflow 人,
我有一个模型,其中包含具有相应地理位置的项目:
class Project(models.Model):
name = models.CharField(_('Project Name'), max_length=100, null=True, blank=True)
geolocation = models.PointField(_('Project Location'))
...
此外,另一个模型表示带有国家边界的 shapefile:
class WorldBorder(models.Model):
name = models.CharField(max_length=50)
mpoly = models.MultiPolygonField()
objects = models.GeoManager()
class Meta:
ordering = ('name',)
def __unicode__(self):
return self.name
如何查询 Project 并按地理位置的国家/地区名称对结果进行排序? 像这样的查询
d = Project.objects.all().order_by(geolocation__name)
不起作用,因为地理位置不是外键。我真的遍历所有项目并像下面的示例中那样手动确定国家吗?
projects = Project.objects.all()
result = []
for project in projects
country = WorldBorder.objects.filter(mpoly__contains = project.geolocation)
foo = [project.name, country]
result.append(foo)
# now sort the list according to the country
result = sorted(result, key=itemgetter(1))
应该有更专业、更优雅的解决方案?有经验的 Python 人有什么建议吗?我可以为此目的使用联接吗?
谢谢你的建议!