diff options
| author | 薛丞宏 <ihcaoe@gmail.com> | 2015-06-23 14:08:12 +0800 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2015-06-26 08:30:05 -0400 |
| commit | d3e12c901777697b7bf08b25e2dd46f0b951db8c (patch) | |
| tree | 04495e1b517d4011f4aedec806be10e42e7da5ea /django | |
| parent | 60879a2193fe79b3853c60782fc4f1fdfdd55d63 (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.py | 16 |
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" % |
