我想使用Geodjango來使用distance_lte
過濾由緯度和經度值構成的Point
對象。下面是我如何設置我的模型:Django使用distance_lte和外鍵過濾
class Point(models.Model):
latitude = models.FloatField()
longitude = models.FloatField()
objects = models.GeoManager()
class Thing(models.Model):
point = models.ForeignKey(Point)
objects = models.GeoManager()
我試圖篩選這樣,但並未奏效:
>>> from myapp.models import Thing, Point
>>> from django.contrib.gis.measure import D
>>> pnt = Point(37.7725205498, -122.408472587)
>>> z = Thing.objects.filter(point__distance_lte=(pnt,D(km=5)))
TypeError: Related Field has invalid lookup: distance_lte
我怎麼做這樣的事? :
>>> z = Thing.objects.filter(point__distance_lte=(pnt,D(km=5)))
### or ###
>>> z = Thing.objects.filter(point__(latitude_longitude)__distance_lte=(pnt,D(km=5)))
感謝您的任何想法!
您是從django.contrib.gis.db繼承模型的嗎?如果沒有,你應該。 – professorDante
我剛剛意識到我導入了'django.db.models'和'django.contrib.gis.db.models'。但是,在刪除'django.db.models'後,我仍然從這個查詢得到相同的結果:'z = Thing.objects.filter(point__distance_lte =(pnt,D(km = 5))) TypeError:Related Field有無效的查找:distance_lte'。還有什麼我可能會失蹤?感謝您的想法! –
你做完之後你已經重新設置了數據庫中的所有模型? – professorDante