2013-07-15 2 views
1

У меня есть модель с именем поля «метки времени», который является полем даты и времени, и когда я печатаю их в питон manage.py оболочки я получаю:Джанго объектов QuerySet фильтр путем сопоставления DateTime

>>> a.timestamp 
datetime.datetime(2013, 7, 15, 18, 45, tzinfo=<UTC>) 

Сейчас. ... Я запускаю задачу django celery каждые 30 секунд, которые предполагают получить все соответствующие объекты за последние 30 секунд.

, как я могу это сделать (вещь = MyModelName.objects.filter (.. что-то ..)

Я надеюсь, что мне удастся объяснить мою личность.

Спасибо всем продвинутым.

Update: Когда я печатаю на моем сервере (питон оболочки)

datetime.datetime.now() Я получаю

datetime.datetime (2013, 7, 15, 20, 34, 4, 366166)

+0

Что именно вы возникли проблемы с? –

+0

Только что обновил мой вопрос. Проблема, с которой я столкнулась, заключается в том, что я не получаю соответствующие объекты. Возможно, это как-то связано с часовым поясом? – yaniv14

ответ

2
MyModelName.objects.filter(timestamp__gte=(datetime.datetime.now() - datetime.timedelta(seconds=30))) 
+0

С вашим кодом я получаю весь объект каждые 30 секунд, что плохо. :( Большое спасибо за помощь – yaniv14

+1

Это не должно быть так, но вы можете попробовать 'django.utils.timezone.now()' вместо 'datetime.datetime.now()'. Https://docs.djangoproject.com/en/dev/ref/utils/#django.utils.timezone.now –

+0

Это работает ... большое вам спасибо – yaniv14

1
import datetime 
from datetime import timedelta 

time = datetime.datetime.now() 
delta = timedelta(seconds=30) 
newtime = time + delta #after adding 30 sec with current time 

so you can loop through the (newtime - time) time interval then you can 
get the expected result.