我可以为Django日期时间字段设置特定的默认时间吗?

时间:2013-04-16 01:53:32

标签: django datetime django-models

我有一个事件模型几乎总是在晚上10点开始,但有时可能会提前/晚开始。为了方便管理员,我希望时间默认为晚上10点,但如果需要可以改变;无论如何都需要设置日期,因此它不需要默认值,但理想情况下它将默认为当前日期。

我意识到我可以使用datetime.now来完成后者,但是我可以(以及如何)将时间设置为特定的默认值吗?

更新:我得到的答案比我能弄清楚我正在努力完成的事情要快得多......在我问之前,我可能应该更进一步使用该应用程序。在此期间感谢您的帮助!

5 个答案:

答案 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)

如果您有兴趣将默认值设置为TimeFieldhttps://code.djangoproject.com/ticket/6754

别' T:

start = models.TimeField(default='20:00')

改为:

import datetime
start = models.TimeField(default=datetime.time(16, 00))

答案 2 :(得分:1)

你看到了这个吗? https://docs.djangoproject.com/en/dev/ref/models/fields/#default

这可能就是你要找的东西。

这里也讨论过:Default value for field in Django model

答案 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

如果没有上下文,很难更具体。