Python Django DurationField默认值

Python Django DurationField默认值,python,django,timedelta,django-1.8,Python,Django,Timedelta,Django 1.8,我想将默认值从django 1.8传递到DurationField。根据文档,它应该是datetime.timedelta from datetime import timedelta pause = DurationField(default=timedelta(minutes=20)) 但在makemigrations上,它说: ValueError: Cannot serialize: datetime.timedelta(0, 1200) There are some values D

我想将默认值从django 1.8传递到DurationField。根据文档,它应该是datetime.timedelta

from datetime import timedelta
pause = DurationField(default=timedelta(minutes=20))
但在makemigrations上,它说:

ValueError: Cannot serialize: datetime.timedelta(0, 1200)
There are some values Django cannot serialize into migration files.
嗯。也许我们应该传递整数

pause = DurationField(default=int(timedelta(minutes=20).total_seconds()))
或:

makemigrations运行正常,但在创建对象时,我看到:

for obj in self.query.objs
  File "/home/web/django_env/lib/python3.4/site-packages/django/db/models/sql/compiler.py", line 920, in <listcomp>
    for obj in self.query.objs
  File "/home/web/django_env/lib/python3.4/site-packages/django/db/models/sql/compiler.py", line 918, in <listcomp>
    ) for f in fields
  File "/home/web/django_env/lib/python3.4/site-packages/django/db/models/fields/__init__.py", line 710, in get_db_prep_save
    prepared=False)
  File "/home/web/django_env/lib/python3.4/site-packages/django/db/models/fields/__init__.py", line 1683, in get_db_prep_value
    return value.total_seconds() * 1000000
AttributeError: 'int' object has no attribute 'total_seconds'
self.query.objs中obj的

文件“/home/web/django_env/lib/python3.4/site packages/django/db/models/sql/compiler.py”,第920行,在
对于self.query.objs中的obj
文件“/home/web/django_env/lib/python3.4/site packages/django/db/models/sql/compiler.py”,第918行,在
)场中的f
文件“/home/web/django_env/lib/python3.4/site packages/django/db/models/fields/__init__.py”,第710行,在get_db_prep_save中
准备就绪(错误)
文件“/home/web/django_env/lib/python3.4/site packages/django/db/models/fields/__init__.py”,第1683行,在get_db_prep_值中
返回值。总秒数()*1000000
AttributeError:“int”对象没有“total_seconds”属性

所以它需要时间增量?

你把事情的顺序稍微弄混了:

pause = DurationField(default=int(timedelta(minutes=20).total_seconds()))

如前所述,整数没有
total_seconds()
属性。相反,它是一个。默认值应该是timedelta。这是Django中的一个bug,将在1.8.1版本中修复。 见:

因此
pause=DurationField(默认值=timedelta(分钟=20))

应该适用于1.8.1版本。

抱歉,qestion中有错误,我尝试了int(timedelta(minutes=20)。total_seconds())我没有答案,这可能是个错误。但请看下面这张票:,其中一位核心django开发人员说:“您应该为您的DurationField默认值提供一个timedelta值”。
pause = DurationField(default=int(timedelta(minutes=20).total_seconds()))