Django 文档非常清楚不应使用幼稚的日期时间,但我有一个用例,我认为在我认为需要它们的地方相当普遍。有时在我的项目中需要跨时区查询对象,但要基于当地时间。
例如,这只是一个人为的例子,假设我想根据每个用户的 local timezone查找在给定日期的下午 4 点到 5 点之间最后更新个人资料的所有用户。我可以简单地这样做:
qs = User.objects.filter(profile__datelastupdated__gte=datetime(2013,4,1,16))
qs = qs.filter(profile__datelastupdated__lte=datetime(2013,4,1,17))
但是,因为我有时区支持处于活动状态,这会导致警告:
RuntimeWarning: DateTimeField received a naive datetime (YYYY-MM-DD HH:MM:SS) while time zone support is active.
我理解为什么会抛出警告,所以我的问题是:我没有以正确的方式考虑日期时间吗?是否有一种惯用的 Django 方式来获得 tz 感知日期时间的特殊性,而这正是您想要的,并且还具有天真的日期时间提供的有时需要的所需通用性?