Skip to content
Browse files

Fix unicode default input on py3

  • Loading branch information...
1 parent e802c97 commit 1ea96acaf56acee692fe6f5668644962231be5e1 @andrewgodwin andrewgodwin committed
Showing with 8 additions and 2 deletions.
  1. +8 −2 django/db/migrations/
10 django/db/migrations/
@@ -3,7 +3,7 @@
import sys
from django.apps import apps
-from django.utils import datetime_safe
+from django.utils import datetime_safe, six
from django.utils.six.moves import input
from .loader import MIGRATIONS_MODULE_NAME
@@ -97,7 +97,13 @@ def ask_not_null_addition(self, field_name, model_name):
print("Please enter the default value now, as valid Python")
print("The datetime module is available, so you can do e.g.")
while True:
- code = input(">>> ").decode(sys.stdin.encoding)
+ if six.PY3:
+ # Six does not correctly abstract over the fact that
+ # py3 input returns a unicode string, while py2 raw_input
+ # returns a bytestring.
+ code = input(">>> ")
+ else:
+ code = input(">>> ").decode(sys.stdin.encoding)
if not code:
print("Please enter some code, or 'exit' (with no quotes) to exit.")
elif code == "exit":

0 comments on commit 1ea96ac

Please sign in to comment.
Something went wrong with that request. Please try again.