Django在日期时间字段中获得独特的时间

时间:2010-02-15 23:06:17

标签: django

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

我应该澄清一下,我在谈论QuerySet方法。我正在谈论的date()方法在这里: http://docs.djangoproject.com/en/1.1/ref/models/querysets/#dates-field-kind-order-asc

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

感谢。

添加澄清: 我有一个名为Event的模型,其中有一个名为start_date的DateTimeField。我们需要知道某一天的哪个小时有活动。 假设我们将其缩小到特定月份:

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 个答案:

答案 0 :(得分:2)

您想从datetime对象获取小时数吗?您的意思是.dates()

hour = instance.yourDateTimeField.hour

答案 1 :(得分:1)

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

答案 2 :(得分:1)

我已创建此代码以便手动执行此操作。

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()

答案 3 :(得分:0)

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