【发布时间】:2020-12-16 12:00:45
【问题描述】:
我正在使用 Django 模型来创建 PostgreSQL-DB。我有一个 DateTimeField 我想将当前时间戳设置为默认值。我知道有多个来源建议如何做到这一点。但是,当我在 Django 之外检查我的数据库时,不会显示默认时间戳。
我尝试过的方法:
1.
created_at = models.DateTimeField(auto_now_add=True)
from django.db.models.functions import Now
...
created_at = models.DateTimeField(default=Now())
from django.utils.timezone import now
...
created_at = models.DateTimeField(default=now)
我希望 PostgreSQL 数据库显示:
TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP
它显示的是timestamp with time zone not null,但没有默认值。任何关于如何做到这一点的想法将不胜感激。
【问题讨论】:
-
不,这是由 Django 自己管理的。
-
显然是这样,但是有没有办法添加这个默认值?当我从另一个服务(不是 django)添加值时遇到问题。对于这些服务,没有默认值。
-
只需手动将其添加到数据库中。
-
好的,但是没有办法通过 django 模型做到这一点?谢谢!
-
据我所知没有,除了进行迁移和使用
RunSQL:docs.djangoproject.com/en/3.1/ref/migration-operations/#runsql 这样做的好处是 Django 将使用它的迁移管理工具来做到这一点,这样你不必手动更改数据库。
标签: django postgresql django-models timestamp