【问题标题】:postgis and geodjango *and* in filter过滤器中的 postgis 和 geodjango *和*
【发布时间】:2016-09-12 15:10:59
【问题描述】:

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


    【解决方案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 在 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)
    

    【讨论】:

    • 太棒了,我一直在寻找这个范围。
    猜你喜欢
    • 2021-05-07
    • 2020-06-09
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    • 2016-10-20
    • 2021-06-15
    • 2015-06-05
    • 1970-01-01
    相关资源
    最近更新 更多