Djangotimezone.now()给出了我启动服务器的时间

wsewodh2  于 2023-03-13  发布在  Go
关注(0)|答案(2)|浏览(130)

我使用timezone.now()(django.utils importimezone)来设置我的模型的初始日期,但是timezone.now()被固定为我设置服务器的时间,并且没有改变,我该如何解决这个问题?
我希望timezone.now()返回用户创建对象的日期时间,而不是我运行服务器的时间。

tcomlyy6

tcomlyy61#

您应该将对函数的引用传递给它,因此:

from django.db import models
from django.utils import timezone

class MyModel(models.Model):
    created_at = models.DateTimeField(default=timezone.now)

但是你可能想使用**auto_now_add=True**[Django-doc],这也会使字段不可编辑:

from django.db import models

class MyModel(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)
gpnt7bae

gpnt7bae2#

常用的模型扩展用于TimeStampedModel的这种特定情况

from django_extensions.db.models import TimeStampedModel

class MyModel(TimeStampedModel):
    pass

迁移将创建createdupdated,它们的处理完全符合您的预期。

相关问题