Django DurationField por defecto

Quiero pasar el valor predeterminado a DurationField desde django 1.8. Según la documentación debe ser datetime.timedelta

from datetime import timedelta pause = DurationField(default=timedelta(minutes=20)) 

Pero en makemigrations dice:

 ValueError: Cannot serialize: datetime.timedelta(0, 1200) There are some values Django cannot serialize into migration files. 

De acuerdo. Tal vez deberíamos pasar enteros?

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

o:

 pause = DurationField(default=20*60) 

makemigrations funciona bien, pero en la creación de objetos veo:

 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  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  ) 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' 

¿Así que quieres timedelta?

El valor predeterminado debe ser un timedelta. Este es un error en Django y está configurado para ser arreglado en la versión 1.8.1. Consulte: https://code.djangoproject.com/ticket/24566

Así que pause = DurationField(default=timedelta(minutes=20)) Debería funcionar con la versión 1.8.1.

Mezclaste el orden de las cosas ligeramente:

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

Como se mencionó, los enteros no tienen un atributo total_seconds() . Más bien, es un método de instancia de timedelta .