在Python/Django中基于日期过滤,忽略时间

4 投票
1 回答
2305 浏览
提问于 2025-04-16 01:53

我想用日期时间来筛选对象到某一天,但找不到相关的例子。

比如,这段代码可以很好地把所有后续事件提取出来:

@login_required
def invoice_picker(request):
    """Grab a date from the URL and show all the invoicable deliveries for that day."""
    query = request.GET.get('q' , '2/9/1984')
    date = datetime
    date = datetime.strptime('7/14/2010', '%m/%d/%Y')
    date = date.strptime(query, '%m/%d/%Y')
    results = []
    if query:
        results = LaundryDelivery.objects.filter(end__gte=date)
    return render_to_response('invoicer.html', {
        'results' : results,
        'date' : date,
        'user' : request.user,
    })

但是当我去掉 __gte 时,它什么都不返回,因为日期的格式是 2010-06-22 04:04:00,而不是 2010-06-22 00:00:00。我也试过:

 results = LaundryDelivery.objects.filter(end.date=date)

但不幸的是,我遇到了“关键字不能是表达式”的错误。有没有什么想法?

1 个回答

8

我觉得没有很好的方法来比较日期时间和日期。一个方法是下面这样:

filter(end__year=date.year, end__month=date.month, end__day=date.day)

另一个方法是使用 range 查找,设置这一天的最早时间和最晚时间。

撰写回答