【问题标题】:Django orm filtering by month or day doesn't work with MySQLDjango orm 按月或天过滤不适用于 MySQL
【发布时间】:2021-01-23 15:41:24
【问题描述】:

我正在使用 PostgreSQL 进行开发。我需要按天过滤一些模型,以便编写该 orm 方法。

from django.utils import timezone
now = timezone.now()

today_count = Count(
   "id",
   filter=Q(
       created_at__year=now.year,
       created_at__month=now.month,
       created_at__day=now.day,
   ),
   )
   Model.objects.aggregate(today=today_count)

另外,我在设置中将 USE_TZ 设置为 True。
此代码在 PostgreSQL 上正常工作,但由于我们在生产环境中使用 MySql,所以今天的总计数返回 0。我该如何处理这种情况?

【问题讨论】:

  • 你试过直接日期查询吗? filter=Q(created_at__date=now.date())

标签: mysql django django-orm


【解决方案1】:

年、月、日的 3 个单独的过滤器看起来有点奇怪。你试过这样过滤吗?这就是Django docs 的做法。

filter=Q(created_at__date=datetime.date(now.year, now.month, now.day)),

【讨论】:

  • 如果我需要按周或按月过滤怎么办?例如 filter(created_at__month=now.month, created_at__year=now.year) 这行得通,我怎么写日期查找?
猜你喜欢
  • 2021-10-30
  • 1970-01-01
  • 2021-09-13
  • 2014-02-12
  • 1970-01-01
  • 2019-02-21
  • 2012-04-26
  • 2017-02-09
  • 2010-11-04
相关资源
最近更新 更多