GeoDjango 距离查询 ForeignKey
GeoDjango distance query ForeignKey
我有一个 geCoded Address 模型,我有一个用户模型将 Address 作为 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。感谢任何帮助。
试试这个:
TestUsers.objects.filter(location__geoCoords__distance_lt=(address1, D(mi=23)))
需要将以下内容添加到使用地址作为外键的模型中
objects = models.GeoManager()
完成后,以下查询将正确解析:
TestUsers.objects.filter(location__geoCoords__distance_lte=(caddr.geoCoords, D(mi=21)))
我有一个 geCoded Address 模型,我有一个用户模型将 Address 作为 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。感谢任何帮助。
试试这个:
TestUsers.objects.filter(location__geoCoords__distance_lt=(address1, D(mi=23)))
需要将以下内容添加到使用地址作为外键的模型中
objects = models.GeoManager()
完成后,以下查询将正确解析:
TestUsers.objects.filter(location__geoCoords__distance_lte=(caddr.geoCoords, D(mi=21)))