Джанго получает уникальные часы в поле даты и времени - PullRequest
3 голосов
/ 16 февраля 2010

Есть ли метод, который я не нахожу для получения различных часов в DateTimeField? По сути, мне нужно то же самое, что обеспечивает .dates (), но для часов.

Я должен уточнить, что я говорю о методе QuerySet. Метод date (), о котором я говорю, находится здесь: http://docs.djangoproject.com/en/1.1/ref/models/querysets/#dates-field-kind-order-asc

Если нет, то есть ли рекомендуемое известное решение?

Спасибо.

Добавление для уточнения: У меня есть модель под названием Event с DateTimeField, которая называется start_date. Нам нужно знать, в какие часы конкретного дня есть событие. Допустим, мы сужаем его до определенного месяца:

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 ]

2 голосов
/ 16 февраля 2010

Хотите получить часы от объекта datetime ? Что .dates() ты имеешь в виду?

hour = instance.yourDateTimeField.hour
1 голос
/ 16 февраля 2010

Я создал этот код для того, чтобы сделать это вручную.

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()
1 голос
/ 16 февраля 2010

К сожалению, в настоящее время нет хорошего способа сделать это, лучший способ - это использовать какой-нибудь необработанный SQL в сочетании с методом extra (), а затем вызвать Different ().

0 голосов
/ 16 февраля 2010

Простое решение: часы могут храниться в отдельном поле, с unique=True.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...