GeoDjango距离查询ForeignKey

时间:2015-02-17 06:51:53

标签: django postgis geodjango

我有一个geCoded地址模型,我有一个用户模型,地址为foreignKey。 我可以使用以下

轻松地在地址模型中执行距离计算
Address.objects.filter(geoCoords__distance_lt=(address1.geoCoords, D(mi=23)))

地址模型:

class Address(models.Model):

   streetAddress1 = models.CharField(blank=False, null=False, max_length=300)
   city = models.CharField(null=False, blank=False,  max_length=50)
   state = USStateField(choices = US_STATES, blank=False, null=False,)
   zip5 = models.CharField(blank=False, null=False, max_length=5, )
   zip4 = models.CharField(blank=True, null=True, max_length=4, )
   geoCoords = models.PointField(null=False, blank=False, srid=4326)
   objects = models.GeoManager()

用户模型:

class TestUsers
   ...
   location = models.ForeignKey(Address, null=True, blank=True)
   ...

我想执行查询以将所有TestUser放在pointField的特定距离内。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

试试这个:

TestUsers.objects.filter(location__geoCoords__distance_lt=(address1, D(mi=23)))

答案 1 :(得分:0)

需要将以下内容添加到使用Address as ForeignKey的模型

objects = models.GeoManager() 

完成后,以下查询会正确解析:

TestUsers.objects.filter(location__geoCoords__distance_lte=(caddr.geoCoords, D(mi=21)))