过滤器中的postgis和geodjango *和*

时间:2016-09-12 15:10:59

标签: django postgis geodjango

我有一个过滤器,它正在运行,但我希望通过查找+ - 12天的任何内容来添加更多大脑

所以我想出了这个:

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 个答案:

答案 0 :(得分: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])
django中的

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)