gpt4 book ai didi

python - Django 过滤当月数据

转载 作者:太空宇宙 更新时间:2023-11-04 01:17:57 24 4
gpt4 key购买 nike

我想过滤当前月份的数据。我试过了。

this_month = datetime.datetime.now().month
products = Product.objects.filter(date_added__month=this_month)

但是,这只适用于 USE_TZ = False 。如果我更改为 USE_TZ = True 。我的过滤器查询不起作用。

模型

date_added = models.DateTimeField(auto_now=True)

最佳答案

这是一个很老的问题,但我认为我的回答可以帮助人们搜索它。

首先,当USE_TZ=True时,我们应该总是使用django.utils.timezone.now()而不是 datetime.datetime.now() . ( ref )

Django 文档 says :

When USE_TZ is True, datetime fields are converted to the current timezone before filtering. This requires time zone definitions in thedatabase.

它还给出了instruction将时区定义安装到数据库:

SQLite: install pytz — conversions are actually performed in Python.

PostgreSQL: no requirements (see Time Zones).

Oracle: no requirements (see Choosing a Time Zone File).

MySQL: install pytz and load the time zone tables with mysql_tzinfo_to_sql.

在我的例子中:mysql 和 Mac Os,下面的命令解决了问题:

sudo mysql_tzinfo_to_sql /usr/share/zoneinfo/ | mysql -u root mysql

现在我可以使用 <datetime>__month过滤即使 USE_TZ = True

如果您需要进一步解释,请发表评论。

编辑

根据 Jerzyk yesterday 的建议添加了有关 django.utils.timezone 的信息

关于python - Django 过滤当月数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23138862/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com