将日期范围列添加到Queryset

时间:2018-08-27 17:32:48

标签: python django

Django新手,在此先感谢您的帮助。

我想添加一个包含分组日期范围的字段。日期范围类似于“ 1/1/2018到1/2/2018”,其中第一个日期是特定名称集中的最小日期,第二个是最大日期。

qs = Qs.objects.filter(**filter_kwargs) \
       .values('name')
       .annotate(v1 = Sum('something')
               , DATE_RANGE = Min('date') + ' - ' + Max('date'))
       .order_by()

最终目标是能够在模板中显示此内容。

3 个答案:

答案 0 :(得分:0)

使用:

Example.objects.filter(date__range=["2018-01-01", "2011-02-01"])

答案 1 :(得分:0)

SQL等价查询:

Select date,... from samplemodel where date range("2018-01-01", "2011-02-01") group by date


Django ORM查询:

SampleModel.objects.filter(date__range=["2018-01-01", "2011-02-01"]).values('date').annotate(.....)

答案 2 :(得分:0)

我一定不清楚我的问题,很抱歉。这就是我最后要去的事情。同样,目标是在查询集中添加一列,该列是最小日期和最大日期的串联。

Name  |  Min Date  |  Max Date  | NEW COLUMN              
Dan   |  1-1-2011  |  2-2-2022  | 1-1-2011 to 2-2-2022
Sam   |  1-2-2011  |  3-12-2022 | 1-2-2011 to 3-12-2022



def someview(request):

    qs = Qs.objects.filter(**filter_kwargs) \
                   .values('Name') \
                   .annotate(temp_min_date = Min(date)
                            ,temp_max_date = Max(date)) \
                   .order_by()

    for o in qs:
      o['date_range'] = "{0} to {1}".format(o['temp_min_date'], o['temp_max_date'])