Django:datetime.now()模型对象保存中的时间不一致

Bab*_*abu 3 python django datetime django-models

在此处输入图片说明

上面是我在管理界面中的表之一,按降序排列id(最近的记录在顶部)。这是我用来创建模型对象并保存的方法。

notification = Notification(from_user=from_user, to_user=to_user,
                            created_date=datetime.now())
notification.save()
Run Code Online (Sandbox Code Playgroud)

该表的所有插入Notification操作仅在各种post_save信号处理程序中完成。会引起这样的不一致吗?

TIME_ZONE = 'GMT'在django 1.3.2中使用。我可以尝试使用auto_now_add=True模型中的选项,但在此之前,我只是想知道为什么会这样。

Aam*_*nan 5

auto_now_add这不是一个好方法。避免使用它。最好的方法是使用设置默认值:

from django.utils import timezone

date_created = models.DateTimeField(default=timezone.now)
Run Code Online (Sandbox Code Playgroud)

django.utils.timezone 将根据您的时区设置存储日期时间。

请注意,()此后的缺失timezone.now是因为我们将可调用对象传递给模型,并且每次保存新实例时都会调用该可调用对象。使用括号,在models.py加载时仅被调用一次。此问题更详细地阐明了此问题。

  • 为什么auto_now_add不是一个好的方法,应该避免吗? (6认同)