2017-09-25 124 views
1

我使用django-google-maps獲取某個地點的位置。 在模型中,我有這個字段:Django按經度和緯度過濾後端過濾器

models.py

class PlaceLocation(models.Model): 
    name = models.CharField(max_length=200) 
    address = map_fields.AddressField(max_length=200) 
    geolocation = map_fields.GeoLocationField(max_length=100) 

當我添加它可以自動找到這種格式的緯度和經度地址:44.4385334,26.005750199999966

我想使用Django過濾器後端按經度和緯度進行過濾,但我無法獲取分隔的值。

filters.py

class LocationFilter(django_filters.FilterSet): 
    ids = NumberInFilter(name='id', lookup_expr='in') 
    geolocation = django_filters.NumberFilter(name='geolocation', lookup_expr='iexact') 

如果我訪問:

'http://127.0.0.1:8000/locations/places/' 它會告訴我所有的地方。

'http://127.0.0.1:8000/locations/places/?geolocation=44.4385334,26.005750199999966'它給了我一個空的列表。

我怎樣才能分離值,以便我可以篩選這樣的: 「http://127.0.0.1:8000/locations/places/?lat=44.4385334&long=26.005750199999966

+0

這是一個有點很難給出一個正確的答案不知道是什麼該查詢集將最終看起來像。你能編輯你的問題來顯示那個查詢集是什麼嗎?例如'PlaceLocation.objects.filter(...)' – Sherpa

回答

0

在此工作的結束:

class LocationFilter(django_filters.FilterSet): 
    ids = NumberInFilter(name='id', lookup_expr='in') 
    geolocation = django_filters.CharFilter(name='geolocation', lookup_expr='exact') 

    class Meta: 
     model = Location 
     fields = ('ids', 'geolocation')