3

在此处输入图像描述

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

notification = Notification(from_user=from_user, to_user=to_user,
                            created_date=datetime.now())
notification.save()

此表的所有插入Notification仅在各种post_save信号处理程序中完成。会不会造成这样的矛盾?

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

4

3 回答 3

5

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

from django.utils import timezone

date_created = models.DateTimeField(default=timezone.now)

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

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

于 2013-02-05T12:35:48.187 回答
2

定义模型时不应初始化 datetime.now()。这会导致某种“缓存” datetime.now。

代替:

Notification(from_user=from_user, to_user=to_user,
                            created_date=datetime.now())

你应该使用:

Notification(from_user=from_user, to_user=to_user,
                            created_date=datetime.now)
于 2015-03-20T14:10:12.190 回答
1

我相信这是由于 Python 运行时环境的处理方式,希望有人可以对此进行重新迭代。auto_add_now=True 应该是您建议的解决方案。

于 2013-02-05T12:30:05.607 回答