我有一个事件模型几乎总是在晚上10点开始,但有时可能会提前/晚开始。为了方便管理员,我希望时间默认为晚上10点,但如果需要可以改变;无论如何都需要设置日期,因此它不需要默认值,但理想情况下它将默认为当前日期。
我意识到我可以使用datetime.now来完成后者,但是我可以(以及如何)将时间设置为特定的默认值吗?
更新:我得到的答案比我能弄清楚我正在努力完成的事情要快得多......在我问之前,我可能应该更进一步使用该应用程序。在此期间感谢您的帮助!
答案 0 :(得分:12)
来自Field.default
的Django文档:
字段的默认值。这可以是值或可调用的 宾语。如果是可调用的,则每次有新对象时都会调用它 创建
这样做:
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)
答案 1 :(得分:8)
如果您有兴趣将默认值设置为TimeField:https://code.djangoproject.com/ticket/6754
别' T:
start = models.TimeField(default='20:00')
改为:
import datetime
start = models.TimeField(default=datetime.time(16, 00))
答案 2 :(得分:1)
这可能就是你要找的东西。
答案 3 :(得分:1)
<iframe src="somepartner-pc:eyJhcHBUb2tlbiI6ImYwZjUxY2MyNTcyNTU3MjIzZmY4YTg5NWMwYzZlOWI5IiwiYXBwVG9rZW5JZCI6IjFfZDRscVVSTF92MiI6IiIsImhvc3RpbmdBcHBUeXBlIjoiQmxhY2tib2FyZCIsImhhc2hUeXBlIjoiU0hBMjU2In0=" style="width: 0px; height: 0px;"></iframe>
不起作用。
如果您要获取当前时间,请改用datetime.time(16, 00)
或datetime.time(datetime.now())
其中your_date_time = datetime.datetime对象
答案 4 :(得分:-1)
这样的东西?
import datetime
dt = datetime.now()
dt.hour = 22
dt.minute = 0
dt.second = 0
如果没有上下文,很难更具体。