过滤器中的 postgis 和 geodjango *和*

postgis and geodjango *and* in filter

我有一个过滤器,它在工作,但我想通过寻找任何 +- 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) 

我不确定如何找到日期,以便找到大于等于上一个日期且小于等于下一个日期的所有内容?

现在

您可以使用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 django 中的查找是包容性的,这意味着范围将包括起始值和结束值。相当于:

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)