Django DurationField default

Ich möchte den Standardwert in DurationField von django 1.8 übergeben. Laut Dokumentation sollte es datetime.timedelta sein

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

Aber auf Makemigrationen heißt es:

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

OK. Vielleicht sollten wir eine ganze Zahl passieren?

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

oder:

 pause = DurationField(default=20*60) 

Makemigrationen läuft ok, aber bei der Objekterstellung sehe ich:

 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' 

Also willst du timedelta?

2 Solutions collect form web for “Django DurationField default”

Der Standardwert sollte ein Zeitlimit sein. Dies ist ein Fehler in Django und wird in der Version 1.8.1 behoben. Siehe: https://code.djangoproject.com/ticket/24566

Also pause = DurationField(default=timedelta(minutes=20)) Sollte mit der Version 1.8.1 arbeiten.

Du hast die Ordnung der Dinge etwas verwechselt:

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

Wie bereits erwähnt, haben ganze Zahlen kein total_seconds() Attribut. Vielmehr ist es eine Instanzmethode von timedelta .

  • Python: Angesichts eines Datums und eines Wochentags finden Sie das Datum des nächsten Vorkommens eines bestimmten Wochentages
  • Python-Timedelta-Problem mit negativen Werten
  • Django-Abfrage: "datetime + delta" als Ausdruck
  • Füge 24 Stunden zu einer negativen Zeitdifferenz in Python hinzu
  • Session-Generierung aus Log-Datei-Analyse mit Pandas
  • Was ist der Unterschied zwischen "datetime.timedelta" und "dateutil.relativedelta.relativedelta" bei der Arbeit nur mit Tagen?
  • Konvertieren Sie ein Timedelta zu Tagen, Stunden und Minuten
  • Berechnen Sie den Unterschied zwischen zwei datetime.date () Daten in Jahren und Monaten
  • Python-Format timedelta zum String
  • Pandas Hinzufügen von Zeitspalte zum Datumsindex
  • Wie man ein timedelta Objekt aus einer einfachen Zeichenfolge konstruiert
  • Python ist die beste Programmiersprache der Welt.