2015-08-17 2 views
2

У меня есть Orders модель, которая хранит заказы пользователей. Я хотел бы отфильтровать только заказы, которые были выпущены (order_started) в течение последних 24 часов для пользователя. Я пытаюсь обновить следующий вид:Как получить последние 24 часа записей из базы данных

def userorders(request): 
    Orders = Orders.objects.using('db1').filter(order_owner=request.user).extra(select={'order_ended_is_null': 'order_ended IS NULL',},) 

модель заказа имеет следующие поля:

order_uid = models.TextField(primary_key=True) 
order_owner = models.TextField() 
order_started = models.DateTimeField() 
order_ended = models.DateTimeField(blank=True, null=True) 

Как я могу добавить дополнительный фильтр?

ответ

3

Вы можете сделать это, как показано ниже, где вы добавить еще один аргумент в filter вызова (при условии, остальной части вашей функции работали):

import datetime 

def userorders(request): 
    time_24_hours_ago = datetime.datetime.now() - datetime.timedelta(days=1) 
    orders = Orders.objects.using('db1').filter(
     order_owner=request.user, 
     order_started__gte=time_24_hours_ago 
     ).extra(select={'order_ended_is_null': 'order_ended IS NULL',},) 

Обратите внимание, что Orders не является хорошим выбором для имени переменного , поскольку он относится к другому классу в проекте и начинается с шапок (обычно используется для классов), поэтому я использовал вместо orders (в другом случае).

Смежные вопросы