我使用 postgres 作为我的数据库。我有一个带有日期时间字段的名为 Invoice 的模型。运行查询时出现错误:
Invoice.objects.datetimes('date_field','day')
错误是:
AttributeError: 'DateTimeQuery' object has no attribute 'tzinfo'
当我的设置文件中的 USE_TZ 设置设置为 True 时,就会发生这种情况。
datetimes 查询需要一个 tzinfo 对象,如果没有,则使用默认的 tzinfo 对象,即 utc。我尝试从 django.utils.timezone 导入 utc tzinfo 对象,并在查询中使用它,如下所示:
from django.utils.timezone import utc
Invoice.objects.datetimes('date_field','day', tzinfo=utc)
即使那样我也遇到了同样的错误。
我已经阅读了关于日期时间查询的 django 文档文档,它说使用 postgres 时不需要 pytz。但是我还是安装了 pytz 并再次尝试但仍然出现错误。
当我将 USE_TZ 设置为 false 时,查询运行良好并且没有错误。
我在 django 网站上找到了这张票,它报告了这个错误,但我不知道如何使用它所说的补丁。
https://code.djangoproject.com/ticket/21432
有人可以告诉我如何使用 USE_TZ=True 运行查询而不出错。