我有一个几乎总是在晚上 10:00 开始的事件模型,但有时可能会更早/更晚开始。为了让管理员更轻松,我希望时间默认为晚上 10 点,但如果需要可以更改;无论如何都需要设置日期,因此它不需要默认值,但理想情况下它会默认为当前日期。
我意识到我可以使用 datetime.now 来完成后者,但是是否可以(以及如何)将时间设置为特定的默认值?
更新:我得到答案的速度比我想知道哪个(s)做我想要完成的事情要快......在我问之前,我可能应该进一步了解该应用程序。感谢您在此期间的帮助!
我有一个几乎总是在晚上 10:00 开始的事件模型,但有时可能会更早/更晚开始。为了让管理员更轻松,我希望时间默认为晚上 10 点,但如果需要可以更改;无论如何都需要设置日期,因此它不需要默认值,但理想情况下它会默认为当前日期。
我意识到我可以使用 datetime.now 来完成后者,但是是否可以(以及如何)将时间设置为特定的默认值?
更新:我得到答案的速度比我想知道哪个(s)做我想要完成的事情要快......在我问之前,我可能应该进一步了解该应用程序。感谢您在此期间的帮助!
来自 Django 文档Field.default
:
字段的默认值。这可以是一个值或可调用对象。如果可调用,则每次创建新对象时都会调用它。
所以这样做:
from datetime import datetime, timedelta
def default_start_time():
now = datetime.now()
start = now.replace(hour=22, minute=0, second=0, microsecond=0)
return start if start > now else start + timedelta(days=1)
class Something(models.Model):
timestamp = models.DateTimeField(default=default_start_time)
如果您有兴趣将默认值设置为TimeField:https ://code.djangoproject.com/ticket/6754
不:
start = models.TimeField(default='20:00')
改为:
import datetime
start = models.TimeField(default=datetime.time(16, 00))
datetime.time(16, 00)
不起作用。
如果datetime.time(datetime.now())
您试图获取当前时间或datetime.time(your_date_time)
其中 your_date_time = datetime.datetime 对象
你见过这个吗?https://docs.djangoproject.com/en/dev/ref/models/fields/#default
这可能就是你要找的。
这里也讨论了:Django 模型中字段的默认值
像这样的东西?
import datetime
dt = datetime.now()
dt.hour = 22
dt.minute = 0
dt.second = 0
没有上下文很难更具体。