запрашивая поле метки времени в Django - PullRequest
3 голосов
/ 05 мая 2010

На мой взгляд, у меня есть дата в следующем формате s_date=20090106 и e_date=20100106

Модель определяется как

     class Activity(models.Model):
          timestamp = models.DateTimeField(auto_now_add=True)

как запросить временную метку с вышеуказанной информацией.

   Activity.objects.filter(timestamp>=s_date and timestamp<=e_date)

Спасибо .....

Ответы [ 2 ]

6 голосов
/ 05 мая 2010

Вы должны преобразовать свою дату в экземпляр класса datetime.datetime. Самый простой способ сделать это для вашего случая:

import datetime

#
# This creates new instace of `datetime.datetime` from a string according to
# the pattern given as the second argument.
#
start = datetime.datetime.strptime(s_date, '%Y%m%d')
end = datetime.datetime.strptime(e_date, '%Y%m%d')

# And now the query you want. Mind that you cannot use 'and' keyword
# inside .filter() function. Fortunately .filter() automatically ANDs
# all criteria you provide.
Activity.objects.filter(timestamp__gte=start, timestamp__lte=end)

Наслаждайтесь!

2 голосов
/ 05 мая 2010

Вот один из способов:

s_date = datetime.strptime('20090106', '%Y%m%d')
e_date = datetime.strptime('20100106', '%Y%m%d')
Activity.objects.filter(timestamp__gte=s_date, timestamp__lte=e_date)

Обратите внимание, что сначала вам нужно использовать strptime для преобразования вашей строковой даты в объект python datetime. Во-вторых, вам нужно использовать методы gte и lte для формирования запроса django.

...