From 6b2d3f9206e6eb2aafb75dcd0ef50ce672bc0ff3 Mon Sep 17 00:00:00 2001
From: Marc Tamlyn <marc.tamlyn@gmail.com>
Date: Tue, 18 Nov 2014 20:24:48 +0000
Subject: [PATCH] Remove text-mangling of default values.

---
 django/contrib/postgres/fields/array.py | 8 --------
 django/db/models/fields/__init__.py     | 2 +-
 docs/releases/1.8.txt                   | 5 +++++
 3 files changed, 6 insertions(+), 9 deletions(-)

diff --git a/django/contrib/postgres/fields/array.py b/django/contrib/postgres/fields/array.py
index c28e3d6ca3..ae07f1bc0c 100644
--- a/django/contrib/postgres/fields/array.py
+++ b/django/contrib/postgres/fields/array.py
@@ -96,14 +96,6 @@ class ArrayField(Field):
             value = [self.base_field.to_python(val) for val in vals]
         return value
 
-    def get_default(self):
-        """Overridden from the default to prevent string-mangling."""
-        if self.has_default():
-            if callable(self.default):
-                return self.default()
-            return self.default
-        return None
-
     def value_to_string(self, obj):
         values = []
         vals = self._get_val_from_obj(obj)
diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py
index 2c3efbb689..3b42c998b7 100644
--- a/django/db/models/fields/__init__.py
+++ b/django/db/models/fields/__init__.py
@@ -722,7 +722,7 @@ class Field(RegisterLookupMixin):
         if self.has_default():
             if callable(self.default):
                 return self.default()
-            return force_text(self.default, strings_only=True)
+            return self.default
         if (not self.empty_strings_allowed or (self.null and
                    not connection.features.interprets_empty_strings_as_nulls)):
             return None
diff --git a/docs/releases/1.8.txt b/docs/releases/1.8.txt
index a233edd443..6635d625bb 100644
--- a/docs/releases/1.8.txt
+++ b/docs/releases/1.8.txt
@@ -857,6 +857,11 @@ Miscellaneous
   :exc:`~django.test.client.RedirectCycleError` if it detects a loop or hits a
   maximum redirect limit (rather than passing silently).
 
+* Translatable strings set as the ``default`` parameter of the field are cast
+  to concrete strings later, so the return type of ``Field.get_default()`` is
+  different in some cases. There is no change to default values which are the
+  result of a callable.
+
 .. _deprecated-features-1.8:
 
 Features deprecated in 1.8