如何从数据库中获取最近24小时的记录

时间:2015-08-17 12:23:39

标签: python django django-views

我有Orders模型,用于存储用户订单。我想过滤用户在过去24小时内仅发出的订单(order_started字段)。我正在尝试更新以下视图:

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)

如何添加额外的过滤器?

1 个答案:

答案 0 :(得分:4)

您可以按照以下方式执行此操作,在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不是变量名称的好选择,因为它引用项目中的另一个类并以caps(通常用于类)开头,因此我使用了orders相反(不同的情况)。