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

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

更新:我得到的答案比我能弄清楚哪个(哪些)做了我想要完成的事情更快...我可能应该在我问之前进一步使用应用程序。 在此期间感谢您的帮助!

===============>>#1 票数:13

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)

===============>>#2 票数:9

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

别:

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

改为:

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

===============>>#3 票数:1

你见过这个吗? https://docs.djangoproject.com/en/dev/ref/models/fields/#default

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

这里也讨论了: Django模型中字段的默认值

===============>>#4 票数:1

datetime.time(16, 00)不起作用。

如果您尝试获取当前时间或datetime.time(your_date_time)请使用datetime.time(datetime.now()) datetime.time(your_date_time)

其中your_date_time = datetime.datetime对象

===============>>#5 票数:-1

像这样的东西?

import datetime

dt = datetime.now()
dt.hour = 22
dt.minute = 0
dt.second = 0

没有背景,很难更具体。

  ask by lisaq translate from so

未解决问题?本站智能推荐: