From b5aac66b28c615b2bda63548cbd695dbb5a0c381 Mon Sep 17 00:00:00 2001 From: Tim Graham Date: Mon, 19 Sep 2016 15:56:53 -0400 Subject: [PATCH] Refs #27025 -- Fixed ArrayField querying on Python 3.6. Python 3.6 parses strings like '0_1' as numeric literals. http://bugs.python.org/issue26331 --- django/contrib/postgres/fields/array.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/django/contrib/postgres/fields/array.py b/django/contrib/postgres/fields/array.py index d123ce769d..e570a3273d 100644 --- a/django/contrib/postgres/fields/array.py +++ b/django/contrib/postgres/fields/array.py @@ -129,13 +129,14 @@ class ArrayField(Field): transform = super(ArrayField, self).get_transform(name) if transform: return transform - try: - index = int(name) - except ValueError: - pass - else: - index += 1 # postgres uses 1-indexing - return IndexTransformFactory(index, self.base_field) + if '_' not in name: + try: + index = int(name) + except ValueError: + pass + else: + index += 1 # postgres uses 1-indexing + return IndexTransformFactory(index, self.base_field) try: start, end = name.split('_') start = int(start) + 1