【问题标题】:Filter with 'date' in Django在 Django 中使用“日期”过滤
【发布时间】:2017-11-30 07:33:48
【问题描述】:

在 model.py 中,我创建类 Order 有一个字段 'order_date' 和 DateTimeField。

在views.py中,我正在使用这个查询:

orders = Order.objects.filter(order_date__date__gte = date_from, order_date__date__lte = date_to)

查询不返回任何数据,虽然在数据库中,date_from和date_to之间有很多记录。

【问题讨论】:

  • 你能把 date_from 和 date_to 代码贴出来吗,你怎么拿的
  • 你在order_day__date__gte中有错字,应该是order_date__date__gte
  • @Satendra,我已修复,将 order_day 更改为 order_date,但我仍然收到我想要的结果。
  • 使用date_from.date() 和date_to.date(),尽管在查询中使用date_from 和date_to,让我知道这是否有效?

标签: django django-views django-queryset


【解决方案1】:

你可以这样做:

orders = Order.objects.filter(order_date__gte = date_from, order_date__lte = date_to)

您有一个不需要的额外 __date,因为 order_date 是一个 DateTimeField。

【讨论】:

  • 如果我不使用__date,当我设置date_from 为'11/30/2017'时,查询date_from 将设置为11/30/2017 00:00: 00'。和date_to 一样。
  • 是 date_from 和 date_to 字符串还是日期对象?
  • 我使用if date_from_str and date_to_str: date_from = getDateFromString(date_from_str) date_to = getDateFromString(date_to_str) else: date_from = datetime.date.today() date_to = datetime.date.today() 获取日期。
猜你喜欢
  • 1970-01-01
  • 2020-08-10
  • 2019-03-01
  • 1970-01-01
  • 2022-11-05
  • 2010-09-30
  • 2016-09-08
  • 2015-02-23
  • 2021-04-05
相关资源
最近更新 更多