Django:durationField 默认值

Mat*_*Zeg 7 python django django-models django-forms django-1.8

使用 Django 的正确方法是DurationField什么?

当我使用time_passed = models.DurationField(default=0)

  • 迁移工作
  • 表默认工作('int' object has no attribute 'total_seconds'

当我使用time_passed = models.DurationField(default=timedelta())

  • 迁移工作(ValueError: Cannot serialize: datetime.timedelta(0)
  • 表单默认值工作

那么在持续时间字段上使用默认值的正确方法或解决此问题的方法是什么?

Mat*_*Zeg 7

默认值应该是时间增量。这是 Django 中的一个错误,将在 1.8.1 版本中修复。

见:https : //code.djangoproject.com/ticket/24566

所以使用默认应该是: time_passed = models.DurationField(default=timedelta())

  • 您不想在此处创建 timedelta 对象的(可变)实例,您只想引用该类。因此,不要使用``models.DurationField(default=timedelta())``,而是使用``models.DurationField(default=timedelta)``。请参阅:https://docs.djangoproject.com/en/dev/ref/models/fields/#default (10认同)
  • 实际上@TroyGrosfield 的评论是正确的答案,MatZeg 的答案不正确。 (2认同)