auto_now_add字段覆盖我的输入

时间:2017-02-14 07:02:29

标签: python django django-models

给定模型

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来说却是如此

1 个答案:

答案 0 :(得分:2)

来自docs

  

auto_now和auto_now_add选项将始终在创建或更新时使用默认时区中的日期。如果你需要不同的东西,你可能想要考虑简单地使用你自己的可调用默认值或覆盖save()而不是使用auto_now或auto_now_add;或使用DateTimeField而不是DateField,并决定如何在显示时处理从datetime到date的转换。

所以你应该这样做

bar = models.DateTimeField(default=date.today)