summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
author薛丞宏 <ihcaoe@gmail.com>2015-06-23 14:08:12 +0800
committerTim Graham <timograham@gmail.com>2015-06-26 08:30:05 -0400
commitd3e12c901777697b7bf08b25e2dd46f0b951db8c (patch)
tree04495e1b517d4011f4aedec806be10e42e7da5ea /django
parent60879a2193fe79b3853c60782fc4f1fdfdd55d63 (diff)
Fixed #25016 -- Reallowed non-ASCII values for ForeignKey.related_name on Python 3.
Diffstat (limited to 'django')
-rw-r--r--django/db/models/fields/related.py16
1 files changed, 12 insertions, 4 deletions
diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py
index 0788db48f8..b038fdf116 100644
--- a/django/db/models/fields/related.py
+++ b/django/db/models/fields/related.py
@@ -119,10 +119,18 @@ class RelatedField(Field):
import re
import keyword
related_name = self.remote_field.related_name
-
- is_valid_id = (related_name and re.match('^[a-zA-Z_][a-zA-Z0-9_]*$', related_name)
- and not keyword.iskeyword(related_name))
- if related_name and not (is_valid_id or related_name.endswith('+')):
+ if not related_name:
+ return []
+ is_valid_id = True
+ if keyword.iskeyword(related_name):
+ is_valid_id = False
+ if six.PY3:
+ if not related_name.isidentifier():
+ is_valid_id = False
+ else:
+ if not re.match(r'^[a-zA-Z_][a-zA-Z0-9_]*\Z', related_name):
+ is_valid_id = False
+ if not (is_valid_id or related_name.endswith('+')):
return [
checks.Error(
"The name '%s' is invalid related_name for field %s.%s" %