gpt4 book ai didi

python - Django运行时警告: DateTimeField received a naive datetime

转载 作者:行者123 更新时间:2023-12-01 06:32:48 28 4
gpt4 key购买 nike

我正在对我的 Django 应用程序进行 Docker 化。由于我将数据库从 SQLite 更改为 Postgres,迁移失败并收到此错误:

RuntimeWarning: DateTimeField Posts.created_at received a naive datetime (2020-01-19 14:26:30.893128) while time zone support is active.
warnings.warn("DateTimeField %s received a naive datetime (%s)"
Traceback (most recent call last):
File "/usr/local/lib/python3.8/site-packages/django/db/backends/utils.py", line 86, in _execute
return self.cursor.execute(sql, params)
psycopg2.errors.CannotCoerce: cannot cast type time without time zone to timestamp with time zone
LINE 1: ..." TYPE timestamp with time zone USING "created_at"::timestam...

我已经搜索了其他问题并尝试了此修复 https://stackoverflow.com/a/20106079/7400518
我正在使用 datetime.now() 然后将其更改为 timezone.now() 但我仍然收到相同的错误。这是 models.py

中的相关行
from django.utils import timezone

class Posts(models.Model):
created_at = models.DateTimeField(default=timezone.now(), blank=True)

最佳答案

I was using datetime.now() then I changed it to timezone.now() but I'm still getting the same error.

更改模型不会更改迁移文件。您应该查找哪些迁移文件包含 datetime.now(),并将其删除(以及依赖于该文件的所有其他迁移)。

此外,使用 default=timezone.now() 并不是一个好主意。它将使用您启动网络服务器的默认时间。这意味着如果服务器运行了两天,时间戳仍将使用两天前的时间戳。

但是 DateTimeField 有一个 auto_now_add=… [Django-doc]添加对象时自动使用时间戳:

class Post(models.Model):
created_at = models.DateTimeField(<b>auto_now_add=True</b>)

这会将字段设置为 blank=Trueeditable=False

关于python - Django运行时警告: DateTimeField received a naive datetime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59811154/

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