소스 검색

Fixed #24566 -- Added support for serializing timedelta

Thanks to knbk for the report.
Baptiste Mispelon 10 년 전
부모
커밋
30a3c2f74c
3개의 변경된 파일9개의 추가작업 그리고 1개의 파일을 삭제
  1. 3 0
      django/db/migrations/writer.py
  2. 2 1
      docs/releases/1.8.1.txt
  3. 4 0
      tests/migrations/test_writer.py

+ 3 - 0
django/db/migrations/writer.py

@@ -351,6 +351,9 @@ class MigrationWriter(object):
             if isinstance(value, datetime_safe.time):
                 value_repr = "datetime.%s" % value_repr
             return value_repr, {"import datetime"}
+        # Timedeltas
+        elif isinstance(value, datetime.timedelta):
+            return repr(value), {"import datetime"}
         # Settings references
         elif isinstance(value, SettingsReference):
             return "settings.%s" % value.setting_name, {"from django.conf import settings"}

+ 2 - 1
docs/releases/1.8.1.txt

@@ -9,4 +9,5 @@ Django 1.8.1 fixes several bugs in 1.8.
 Bugfixes
 ========
 
-* ...
+* Added support for serializing :class:`~datetime.timedelta` objects in
+  migrations (:ticket:`24566`).

+ 4 - 0
tests/migrations/test_writer.py

@@ -351,6 +351,10 @@ class WriterTests(TestCase):
         self.assertSerializedEqual(frozenset())
         self.assertSerializedEqual(frozenset("let it go"))
 
+    def test_serialize_timedelta(self):
+        self.assertSerializedEqual(datetime.timedelta())
+        self.assertSerializedEqual(datetime.timedelta(minutes=42))
+
     def test_simple_migration(self):
         """
         Tests serializing a simple migration.