升级到Django 1.9后的时区问题

塔德

我在Django 1.8.5中通过了一项测试。这是

def test_user_returns_from_vacation_correctly_increments_review_timestamps(self):
        self.user.profile.on_vacation = True

        now = timezone.now()
        an_hour_ago = now - timedelta(hours=1)
        two_hours_ago = now - timedelta(hours=2)

        self.user.profile.vacation_date = an_hour_ago
        self.user.profile.save()
        self.review.last_studied = two_hours_ago
        self.review.save()
        previously_studied = self.review.last_studied

        user_returns_from_vacation(self.user)
        rev = UserSpecific.objects.get(id=self.review.id) #<---This is the line causing the error!
        print(rev)
        self.assertNotEqual(rev.last_studied, previously_studied)
        self.assertAlmostEqual(rev.last_studied, an_hour_ago, delta=timedelta(seconds=1))

但是,在升级到Django 1.9时,此测试会导致以下错误:

Error
Traceback (most recent call last):
/pytz/tzinfo.py", line 304, in localize
etc etc
    raise ValueError('Not naive datetime (tzinfo is already set)')
ValueError: Not naive datetime (tzinfo is already set)

以下是相关user_returns_from_vacation代码:

def user_returns_from_vacation(user):
    """
    Called when a user disables vacation mode. A one-time pass through their reviews in order to correct their last_studied_date, and quickly run an SRS run to determine which reviews currently need to be looked at.
    """
    logger.info("{} has returned from vacation!".format(user.username))
    vacation_date = user.profile.vacation_date
    if vacation_date:
        users_reviews = UserSpecific.objects.filter(user=user)
        elapsed_vacation_time = timezone.now() - vacation_date
        logger.info("User {} has been gone for timedelta: {}".format(user.username, str(elapsed_vacation_time)))
        updated_count = users_reviews.update(last_studied=F('last_studied') + elapsed_vacation_time)
        users_reviews.update(next_review_date=F('next_review_date') + elapsed_vacation_time)
        logger.info("brought {} reviews out of hibernation for {}".format(updated_count, user.username))

    user.profile.vacation_date = None
    user.profile.on_vacation = False
    user.profile.save()

更新:如果我删除F()表达式,并用for循环替换它们,此错误将消失。像这样:

    for rev in users_reviews:
        lst = rev.last_studied
        nsd = rev.next_review_date
        rev.last_studied = lst + elapsed_vacation_time
        rev.next_review_date = nsd + elapsed_vacation_time
        rev.save()

我在1.9的发行说明中注意到,他们已经为时区纯朴的数据库添加了TIME_ZONE属性(例如SQLite,这是我运行测试所使用的属性)。我尝试将我的时区添加到数据库配置中,但是问题仍然存在。有任何想法吗?这是我在settings.py中与时区相关的设置

MY_TIME_ZONE = 'America/New_York'
TIME_ZONE = MY_TIME_ZONE
DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
            'TIME_ZONE': MY_TIME_ZONE
        }
塔德

最终,在困扰了核心开发人员之后,我发现这确实是一个错误,特别是在使用SQLite时。它记录在这里,但仍未修复:

https://code.djangoproject.com/ticket/27544

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

升级到 Apache Cayenne 4.0 BETA 1 的问题

来自分类Dev

升级到Ubuntu 17.10后,RAID1是只读的

来自分类Dev

将 Django 从 1.8 升级到 1.9 的问题

来自分类Dev

升级到1.8.1后Django管理员中断

来自分类Dev

升级到django-rest-framework 3后的UnicodeDecodeError

来自分类Dev

升级到Django 1.5后Oracle查询变慢

来自分类Dev

DjangoCMS TypeError:from_db_value()缺少1个必需的位置参数:升级到3.7.2 w / Django 3.0.1后的'context'

来自分类Dev

升级到16.04后libgtk的问题

来自分类Dev

升级到 Clearcase 9

来自分类Dev

将android studio 1升级到2后出现错误,无法启动

来自分类Dev

从6.0升级到6.1-RC1后的CNFE

来自分类Dev

从 Ubuntu 11.10 升级到 13.04 后 RAID1 阵列丢失

来自分类Dev

将 RxPy 从 1.x 升级到 3.x 后订阅不起作用

来自分类Dev

从 SDK 版本 1 升级到 3 后,如何修复 getFederationToken 返回 403 未授权错误

来自分类Dev

django升级到1.6.5后,django对象不是JSON可序列化错误

来自分类Dev

自升级到Django 1.8后,Django AssertTemplateUsed测试失败

来自分类Dev

升级到django 2.2后,Django模型对象变得不可哈希

来自分类Dev

django升级到1.6.5后,django对象不是JSON可序列化错误

来自分类Dev

systemd apt固定为-1并从Debian 8升级到Debian 9时安装

来自分类Dev

从Angular 8升级到Angular 9的问题

来自分类Dev

@ViewChild升级到Angular 9后无法正常工作

来自分类Dev

ViewChild升级到角度9后无法正常工作

来自分类Dev

升级到ios9后字体变小

来自分类Dev

从14升级到Ubuntu 16后卡在fsck“ / dev / sda1:clean xxx / xxx files [...]”

来自分类Dev

从Rails 4.2.6升级到Rails 5.0.0.rc1后服务器退出

来自分类Dev

从14升级到Ubuntu 16后卡在fsck“ / dev / sda1:清洁xxx / xxx文件[...]”

来自分类Dev

升级到ASP.Net RC1后无法打开ASP.Net Beta 4解决方案

来自分类Dev

从 2.0.0-preview1-final 升级到 2.0.0-preview2-final 后出现 System.MissingMethodException

来自分类Dev

在 Xcode 9.1 中将 watchOS 1 升级到 watchOS4 后,Enable Bitcode 未设置为 Yes

Related 相关文章

  1. 1

    升级到 Apache Cayenne 4.0 BETA 1 的问题

  2. 2

    升级到Ubuntu 17.10后,RAID1是只读的

  3. 3

    将 Django 从 1.8 升级到 1.9 的问题

  4. 4

    升级到1.8.1后Django管理员中断

  5. 5

    升级到django-rest-framework 3后的UnicodeDecodeError

  6. 6

    升级到Django 1.5后Oracle查询变慢

  7. 7

    DjangoCMS TypeError:from_db_value()缺少1个必需的位置参数:升级到3.7.2 w / Django 3.0.1后的'context'

  8. 8

    升级到16.04后libgtk的问题

  9. 9

    升级到 Clearcase 9

  10. 10

    将android studio 1升级到2后出现错误,无法启动

  11. 11

    从6.0升级到6.1-RC1后的CNFE

  12. 12

    从 Ubuntu 11.10 升级到 13.04 后 RAID1 阵列丢失

  13. 13

    将 RxPy 从 1.x 升级到 3.x 后订阅不起作用

  14. 14

    从 SDK 版本 1 升级到 3 后,如何修复 getFederationToken 返回 403 未授权错误

  15. 15

    django升级到1.6.5后,django对象不是JSON可序列化错误

  16. 16

    自升级到Django 1.8后,Django AssertTemplateUsed测试失败

  17. 17

    升级到django 2.2后,Django模型对象变得不可哈希

  18. 18

    django升级到1.6.5后,django对象不是JSON可序列化错误

  19. 19

    systemd apt固定为-1并从Debian 8升级到Debian 9时安装

  20. 20

    从Angular 8升级到Angular 9的问题

  21. 21

    @ViewChild升级到Angular 9后无法正常工作

  22. 22

    ViewChild升级到角度9后无法正常工作

  23. 23

    升级到ios9后字体变小

  24. 24

    从14升级到Ubuntu 16后卡在fsck“ / dev / sda1:clean xxx / xxx files [...]”

  25. 25

    从Rails 4.2.6升级到Rails 5.0.0.rc1后服务器退出

  26. 26

    从14升级到Ubuntu 16后卡在fsck“ / dev / sda1:清洁xxx / xxx文件[...]”

  27. 27

    升级到ASP.Net RC1后无法打开ASP.Net Beta 4解决方案

  28. 28

    从 2.0.0-preview1-final 升级到 2.0.0-preview2-final 后出现 System.MissingMethodException

  29. 29

    在 Xcode 9.1 中将 watchOS 1 升级到 watchOS4 后,Enable Bitcode 未设置为 Yes

热门标签

归档