给定模型
class Foo(models.Model):
bar = models.DateTimeField(auto_now_add=True)
当我这样做时
my_foo = Foo.objects.create(bar=yesterday)
然后my_bar.foo
不是昨天而是现在。我必须做
my_foo = Foo.objects.create()
my_foo.bar = yesterday
my_foo.save()
这并非如此,但对于Django 1.8.17来说却是如此
答案 0 :(得分:2)
来自docs:
auto_now和auto_now_add选项将始终在创建或更新时使用默认时区中的日期。如果你需要不同的东西,你可能想要考虑简单地使用你自己的可调用默认值或覆盖save()而不是使用auto_now或auto_now_add;或使用DateTimeField而不是DateField,并决定如何在显示时处理从datetime到date的转换。
所以你应该这样做
bar = models.DateTimeField(default=date.today)