代码之家  ›  专栏  ›  技术社区  ›  Ilian Iliev

Django模型时程滤波方法

  •  2
  • Ilian Iliev  · 技术社区  · 15 年前

    here 但我不清楚这两者之间有什么区别:

    {'date_time_field__range': (datetime.datetime.combine(date, datetime.time.min),
                            datetime.datetime.combine(date, datetime.time.max))}
    

    YourModel.objects.filter(datetime_published__year='2008', 
                         datetime_published__month='03', 
                         datetime_published__day='27')
    
    1 回复  |  直到 8 年前
        1
  •  5
  •   Monika Sulik    15 年前

    我自己也很困惑,但我想我已经解决了 the documentation about the range lookup option 很有帮助。

    当您这样做时:

    YourModel.objects.filter(datetime_published__year='2008', 
                         datetime_published__month='03', 
                         datetime_published__day='27')
    

    SELECT ... WHERE EXTRACT('year' FROM pub_date) = '2008'
                 AND EXTRACT('month' FROM pub_date) = '03'
                 AND EXTRACT('day' FROM pub_date) = '27';
    

    鉴于django基于日期的通用视图的这一部分:

    {'date_time_field__range': (datetime.datetime.combine(date, datetime.time.min),
                            datetime.datetime.combine(date, datetime.time.max))}
    

    变得像:

    YourModel.objects.filter(datetime_published__range=(
                    datetime.datetime.combine('2008-03-27',datetime.time.min),
                    datetime.datetime.combine('2008-03-27',datetime.time.max)
                                                                      )
    

    SELECT ... WHERE datetime_published BETWEEN '2008-03-27 00:00:00'
                                            AND '2008-03-27 23:59:59';
    

    (上一个SQL示例中的时间戳的格式显然是错误的,但是您明白了)

    希望能回答你的问题:)