代码之家  ›  专栏  ›  技术社区  ›  Niladry Kar

如何在django中显示特定日期范围内的月份列表?

  •  0
  • Niladry Kar  · 技术社区  · 7 年前

    假设我有一个模型:

    class Order(models.Model):
    created = model.DateTimeField(auto_now_add=True)
    total = models.IntegerField()
    

    我的问题是:

    qs= Order.objects.filter(created__range=('2018,11,1','2019,11,1'))
    

    我想在我的模板中查看上述查询中给出的日期范围内的所有月份。。。

    如何在django实现这一点?

    2 回复  |  直到 7 年前
        1
  •  2
  •   Parth Modi    7 年前

    >>> from datetime import datetime, timedelta
    >>> from collections import OrderedDict
    >>> dates = ["2014-10-10", "2016-01-07"]
    >>> start, end = [datetime.strptime(_, "%Y-%m-%d") for _ in dates]
    >>> OrderedDict(((start + timedelta(_)).strftime(r"%b-%y"), None) for _ in 
    xrange((end - start).days)).keys()
    ['Oct-14', 'Nov-14', 'Dec-14', 'Jan-15', 'Feb-15', 'Mar-15', 'Apr-15', 'May-
    15', 'Jun-15', 'Jul-15', 'Aug-15', 'Sep-15', 'Oct-15', 'Nov-15', 'Dec-15', 
    'Jan-16']
    
        2
  •  1
  •   Nikita Tonkoskur    7 年前

    你只需要提取 month 从…起 created queryset中每个条目的字段。

    import datetime
    
    qs= Order.objects.filter(created__range=(datetime.date(2018,11,1),datetime.date(2019,11,1)))
    
    months = []
    for order in qs:
      months.append(order.created.month)
      ...
    

    months 将看起来像这样: [6, 10, 11, 4, 4, 4, 9, 10, 2, 4, 4, 11, 4]

    如果你希望你的月份采用不同的格式 [January, May, etc.] 看看 本段: https://simpleisbetterthancomplex.com/article/2016/08/10/exploring-django-utils-1.html

    推荐文章