Сравнение моделей Django не работает с типом данных с плавающей точкой - PullRequest
0 голосов
/ 04 сентября 2018

Я работаю над проектом, который требует услуг определения местоположения. Я использую API Google Geocode (в обратном направлении), чтобы получить подробную информацию из необработанных координат (широта и долгота), таких как город, провинция, округ и т. д. мое геокодирование выполняется на стороне сервера, и это дает мне возможность кэшировать результат, чтобы избежать ограничения запросов от Google. Моя таблица кэширования работает в контексте границ местоположения (северо-западные и юго-восточные координаты). Я впервые реализовал эту функцию в PHP и MySql, и она работала нормально.

#this is the sql query to search for location within a specific bound
SELECT _mainid FROM {$this->addressCacheTable} WHERE $lat<= _nlat AND $lat>=_slat AND $lon>=_slong AND $lon<=_nlong

Я пытаюсь перейти на Python с использованием фреймворка Django. и у меня есть это

#this is my query statement in django 
data = Coordinates.objects.filter(nlat__lte=lat, slat__gte=lat, nlon__gte=lon, slon__lte=lon)

в python, я всегда получаю пустой результат, даже если они являются значениями, которые логически соответствуют моему запросу. Как заставить мой django-код работать так же, как мой PHP / MySql

Пожалуйста, я уже несколько дней застоялся, любой указатель в правильном направлении был бы наиболее полезным. также, если что-то не так с моими реализациями или есть лучший способ, которым я могу это сделать, я был бы очень признателен за подсказку.

#Database structure with PHP and MySql

CREATE TABLE "address_cache" ( "id" serial NOT NULL REFERENCES "location_table" ("id"), "_nlat" DECIMAL(8,6) NOT NULL, "_nlon" DECIMAL(9,6) NOT NULL, "_slat" DECIMAL(8,6) NOT NULL, "_slong" DECIMAL(9,6) NOT NULL, );

#django Model for coordinates using django-mptt to model hierarchical relationship between country,state,county ......etc

    class LocationInfo(MPTTModel):
        text = models.CharField(max_length=MAX_CHAR_LENGTH, unique=True)
        parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children')

        class MPTTMeta:
            order_insertion_by = ['text']

        def __str__(self):
            return self.text

    class Coordinates(MPTTModel):
        nlat =models.FloatField(default=0.0)
        slat =models.FloatField(default=0.0)
        nlon = models.FloatField(default=0.0)
        slon = models.FloatField(default=0.0)
        location=TreeForeignKey(LocationInfo,on_delete=models.CASCADE,related_name='coordinates',to_field='id')
        parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children')

        class MPTTMeta:
            order_insertion_by = ['location']

        def __str__(self):
            return "Bounds {NE:%f,%f SW:%f,%f} Location: %s"%(self.nlat,self.nlon,self.slat,self.slon,self.location.text)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...