django queryset:启用use\u tz时无法按当前周筛选

mzsu5hc0  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(321)

我正在使用django 2.1和 USE_TZ = True 以及 TIME_ZONE = 'UTC' .
这是我的模型datetimefield:

create_date = models.DateTimeField(_('date created'), null=True, auto_now_add=True)

我正在尝试根据周数获取当前周结果。我尝试了以下方法:

today = timezone.now()
current_week_num = today.isocalendar()[1]
week_results = MyModel.objects.filter(create_date__week=current_week_num).count()

当数据库中有记录时,它总是返回0。如果我设置 USE_TZ = False . 我用的是mysql数据库。
你知道吗?
更新:
问题是mysql时区表为空!我不得不运行:mysql\u tzinfo\u to\u sql/usr/share/zoneinfo,问题就解决了!

myzjeezk

myzjeezk1#

剖面图 Other databases 在https://docs.djangoproject.com/en/2.1/topics/i18n/timezones/#database 如果您的数据库不是postgres,可能会感兴趣。
其他后端存储没有时区信息的日期时间。如果您从use_tz=false切换到use_tz=true,则必须将您的数据从本地时间转换为utc—如果您的本地时间有dst,这是不确定的。

li9yvcax

li9yvcax2#

我终于发现了问题所在,基本上mysql时区表是空的,需要填写!
运行以下命令后:

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

问题消失了!

相关问题