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

新手上路,请多包涵

我有一个几乎总是在晚上 10:00 开始的活动模型,但有时可能会提前/延迟开始。为了让管理变得简单,我希望时间默认为晚上 10 点,但如果需要可以更改;无论如何都需要设置日期,因此它不需要默认值,但理想情况下它会默认为当前日期。

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

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

原文由 lisaq 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 434
1 个回答

来自 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)

原文由 tobych 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题