GeoDjango:按地理位置的国家/地区排序

时间:2012-06-12 12:08:30

标签: python django join geodjango

嗨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人员的任何建议吗?我可以为此目的使用连接吗?

感谢您的建议!

0 个答案:

没有答案