Использование Django ORM для получения последних строк

В SQL, если бы я хотел запросить в таблице данные за последние 10 минут (независимо от часовых поясов и т. д.), я бы просто сделал (используя язык postgresql):

select * from table where creation_time > now() - interval'10 mins';

Есть ли эквивалентный способ сделать что-то подобное с помощью Django ORM, не обращая внимания на то, какие настройки часового пояса установлены для приложения? Было бы здорово получить иллюстративный пример здесь.


person Hassan Baig    schedule 19.02.2017    source источник


Ответы (1)


Попробуй это:-

Данные в течение 10 минут: -

from datetime import datetime, timedelta

time_threshold = datetime.now() - timedelta(minutes=10)
results = Table.objects.filter(createdOn__lte=time_threshold)

Последние 10 строк на основе значения createdOn: -

recentData = Table.objects.all().order_by('-createdOn')[:10]

Последние 10 строк, если у вас нет столбца createdOn для фильтрации: -

recentData = Table.objects.all().order_by('-id')[:10]
person Piyush S. Wanare    schedule 19.02.2017
comment
Уточнение: должно быть datetime.now() или datetime.utcnow(). В моем конкретном сценарии будет ли когда-нибудь иметь смысл иметь datetime.utcnow()? - person Hassan Baig; 19.02.2017
comment
Не совсем потому, что datetime.utcnow() ОС предоставила значения. - person Piyush S. Wanare; 19.02.2017