Набор запросов Django для диапазона с плавающей запятой - PullRequest
0 голосов
/ 15 ноября 2011

Я столкнулся с проблемой, с которой мне никогда не приходилось сталкиваться в наборе запросов Django.У меня есть более 1 000 000 типов данных (записей) с плавающей запятой вместе с полем внешнего ключа в одном классе модели данных.Я пытаюсь выполнить запрос к этим записям с помощью следующей процедуры.

  • Пользователь введет значение (v), например, 1248.597290039063 (с плавающей точкой) и отфильтрует, как preicison (f) (сколько цифр принятьпосле десятичного числа).Если точность равна 5, тогда я возьму только 5 чисел после десятичной точки, например (1248.59729).Я получу этот запрос из html-шаблона и выполню операцию покоя в представлении.
  • Параметр по умолчанию (p) = 0,000005
  • новое значение (nv) = p * v
  • Самый высокий диапазон (HR) = v + nv
  • Самый низкий диапазон (LR) = v-nv
  • Теперь HR и LR - это пространство поиска, где должен выполняться запрос.

Так что, пожалуйста, сосредоточьтесь только на запросе к такому диапазону после десятичной точки (фиксировано) ?

Если вопрос не достаточно ясен, пожалуйста, прокомментируйте,Я снова буду стараться изо всех сил.

Веди меня

1 Ответ

6 голосов
/ 15 ноября 2011

Если у вас уже есть верхний и нижний пределы диапазона, вы можете использовать простой запрос диапазона в Django:

objects = my_model.objects.filter(field__gte=LR, field__lte=HR)

или несколько короче:

objects = my_model.objects.filter(field__range=(LR, HR))

(Вы, конечно, должны будете заменить «my_model» и «field» фактическими именами моделей и полей)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...