如何在Django模型中将当前默认时间设置为“TimeField()”?

7ivaypg9  于 2023-05-30  发布在  Go
关注(0)|答案(2)|浏览(222)

该文档在DateField.auto_now_add中写道:
首次创建对象时自动将字段设置为“现在”。...如果您希望能够修改此字段,请设置以下内容而不是auto_now_add=True

  • 对于DateFielddefault=date.today - from datetime.date.today()
  • 对于DateTimeFielddefault=timezone.now - from django.utils.timezone.now()

所以对于DateField()和DateTimeField(),我可以分别设置当前默认的日期和时间,如下所示:

# "models.py"

from datetime import date
from django.utils import timezone

class MyModel(models.Model):
    date = models.DateField(default=date.today) # Here
    datetime = models.DateTimeField(default=timezone.now) # Here

现在,如何将当前默认时间设置为TimeField(),如下所示?

# "models.py"

class MyModel(models.Model):       # ?
    time = models.TimeField(default=...)
tvokkenx

tvokkenx1#

你可以使用一个 callable

from django.utils import timezone

def current_time():
    return timezone.now().time()

class MyModel(models.Model):
    time = models.TimeField(default=current_time)

每次你定义一个新的MyModel,而时间没有过去,它将 * 调用 * current_time方法,从而返回当前的时间分量(时间分区的时间)。
使用括号 not 很重要,所以default=current_timenotdefault=current_time()

vsaztqbk

vsaztqbk2#

您可以使用datetime.datetime.now()和datetime.datetime.now().strftime()或time.strftime()和time.localtime()将当前默认时间设置为TimeField(),如下所示?

# "models.py"

from datetime import datetime

class MyModel(models.Model):
    time = models.TimeField(default=datetime.now().strftime("%H:%M:%S")) # Here

或者:

# "models.py"

from time import strftime, localtime

class MyModel(models.Model):
    time = models.TimeField(default=strftime("%H:%M:%S", localtime())) # Here

相关问题