代码之家  ›  专栏  ›  技术社区  ›  mhost

Django在日期时间字段中获取唯一的小时数

  •  3
  • mhost  · 技术社区  · 16 年前

    有没有一种方法我找不到在datetimefield中获得不同的小时数?我基本上想要和.dates()提供的完全相同的东西,但是需要几个小时。

    我应该澄清一下,我所说的是一个查询集方法。我要讨论的日期()方法如下: http://docs.djangoproject.com/en/1.1/ref/models/querysets/#dates-field-kind-order-asc

    如果没有,是否有推荐的已知解决方案?

    谢谢。

    补充说明: 我有一个名为事件的模型,它有一个名为开始日期的日期时间字段。我们需要知道一天中哪几个小时有活动。 假设我们把范围缩小到一个特定的月份:

    objects = Event.objects.filter(start_date__year=2010, start_date__month=2)
    

    现在,日期函数可以给我一个包含所有有事件的日期的列表:

    distinct_days = objects.dates('start_date', 'day')
    

    我想要的是把它缩小到一个特定的日期,然后得到一个一天中有一个事件发生的时间列表。

    objects = Event.objects.filter(start_date__year=2010, start_date__month=2, start_date__day=3)
    distinct_hours = objects.times('start_date', 'hour') # This command doesn't exist and am wondering how to do this
    

    谢谢。

    4 回复  |  直到 16 年前
        1
  •  1
  •   Alex Gaynor    16 年前

    不幸的是,目前没有一种好的方法可以做到这一点,最好的方法是将一些原始SQL与extra()方法结合使用,然后调用distinct()。

        2
  •  2
  •   Felix Kling    16 年前

    你想从一个 datetime 对象?哪个 .dates() 你的意思是?

    hour = instance.yourDateTimeField.hour
    
        3
  •  1
  •   mhost    16 年前

    我创建此代码是为了手动执行。

    hours = []
    for h in objects.values('start_date'):
        hours.append(h['start_date'].hour)
    tempdict = {}
    for x in hours:
        tempdict[x] = x
    hours = tempdict.values()
    hours.sort()
    
        4
  •  0
  •   Dawid    16 年前

    简单的解决方案:小时可以存储在单独的字段中, unique=True .