Django Filter Backend 按经纬度过滤
Django Filter Backend filter by latitude and longitude
我正在使用 django-google-maps 来获取地点的位置。
在模型中我有这个字段:
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'
最终成功了:
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')
我正在使用 django-google-maps 来获取地点的位置。 在模型中我有这个字段:
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'
最终成功了:
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')