2016-09-12 2 views
0

У меня есть фильтр, который работает, но я хочу, чтобы добавить больше мозгов к нему, ища что-нибудь, что есть + - 12 днейPostGIS и GeoDjango * и * в фильтре

Так что я пришел с этим:

last_date = firstPointCheck.acquisition_date - timedelta(days=12) 
next_date = firstPointCheck.acquisition_date + timedelta(days=12) 

object_list2 = object_list.filter(center__distance_lte=(firstPointCheck.center, D(m=deltaCenter)), acquisition_date__lte=firstPointCheck.acquisition_date, acquisition_date__gte=last_date) 

Я не уверен, как и даты, чтобы я мог найти все, что было больше и равно последней дате и меньше или равно следующей дате?

Теперь

ответ

1

Вы можете проверить, если дата вашего объекта находится в указанном диапазоне с помощью Django's range lookup. Он будет выглядеть следующим образом:

last_date = firstPointCheck.acquisition_date - timedelta(days=12) 
next_date = firstPointCheck.acquisition_date + timedelta(days=12) 

object_list2 = object_list.filter(center__distance_lte=(firstPointCheck.center, D(m=deltaCenter)), acquisition_date__range=[last_date, next_date]) 

range поиска в Джанго это включено, это означает, что диапазон будет включать в себя начальное и конечное значение. Это эквивалентно:

last_date = firstPointCheck.acquisition_date - timedelta(days=12) 
next_date = firstPointCheck.acquisition_date + timedelta(days=12) 

object_list2 = object_list.filter(center__distance_lte=(firstPointCheck.center, D(m=deltaCenter)), acquisition_date__lte=next_date, acquisition_date__gte=last_date) 
+0

Удивительный тип того, что я искал. – Codejoy

Смежные вопросы