【问题标题】:Extract date from django query从 django 查询中提取日期
【发布时间】:2018-10-05 14:12:28
【问题描述】:

我有一个关于日期过滤器的查询。

queryset=Model.objects.filter(order_created_on__gte='2018-10-10')

它构造一个这样的查询 -

 "Model"."order_created_on" >= 2018-10-10 00:00:00+05:30

当我 qun 查询时,这会导致“00:00:00+05:30”出现错误。查询集正确填充数据,但我希望它通过查询运行。

另一种方法是使用 'order_created_on__date__gte' 但它给出错误,thinkso 日期过滤器不适用于 __gte。

另一种选择是构建我的过滤器 - 'order_created_on__range=['2018-10-10 00:00:00+05:30']'。

还有其他选择吗?

【问题讨论】:

  • “我不希望它通过查询运行”是什么意思?
  • 我想通过查询运行。有一种机制可以执行查询以生成 csv 文件。

标签: django python-3.x django-rest-framework


【解决方案1】:

你可以使用

queryset=Model.objects.filter(order_created_on__year__gte=2018, order_created_on__month__gte=10, order_created_on__date__gte=10)

或者干脆

queryset= Model.objects.filter(order_created_on__gte=datetime.date(2010, 10, 10))

【讨论】:

  • 每次都将时区附加到查询中
  • 你试过 queryset= Model.objects.filter(order_created_on__gte=datetime.date(2010, 10, 10)) 吗?
  • order_created_on__date__gte 此语句给出错误 - 'expected string or bytes-like object' 它实际上是 order_created_on__day__gte
  • 用模型结构更新你的问题
  • 它很简单,任何带有 order_created_on 的查询集(上面讨论的所有答案,包括用于比较的日期时间对象,将其拆分为日期、年、月)都有文本 ''order_created_on > yyyy-mm-dd 00: 00:00+5:30" 在其实际查询中。
猜你喜欢
  • 2021-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-07
  • 2021-09-05
  • 1970-01-01
  • 2012-10-13
  • 2015-12-08
相关资源
最近更新 更多