Replaced '__' with LOOKUP_SEP constant.

This commit is contained in:
Nick Pope 2016-10-06 11:02:48 +01:00 committed by Tim Graham
parent a346a88d46
commit f1664a2734
4 changed files with 9 additions and 7 deletions

View File

@ -11,6 +11,7 @@ from django.contrib.admin.utils import (
from django.core import checks from django.core import checks
from django.core.exceptions import FieldDoesNotExist from django.core.exceptions import FieldDoesNotExist
from django.db import models from django.db import models
from django.db.models.constants import LOOKUP_SEP
from django.forms.models import ( from django.forms.models import (
BaseModelForm, BaseModelFormSet, _get_foreign_key, BaseModelForm, BaseModelFormSet, _get_foreign_key,
) )
@ -458,7 +459,7 @@ class BaseModelAdminChecks(object):
] ]
elif field_name == '?': elif field_name == '?':
return [] return []
elif '__' in field_name: elif LOOKUP_SEP in field_name:
# Skip ordering in the format field1__field2 (FIXME: checking # Skip ordering in the format field1__field2 (FIXME: checking
# this format would be nice, but it's a little fiddly). # this format would be nice, but it's a little fiddly).
return [] return []

View File

@ -30,7 +30,7 @@ def lookup_needs_distinct(opts, lookup_path):
""" """
Returns True if 'distinct()' should be used to query the given lookup path. Returns True if 'distinct()' should be used to query the given lookup path.
""" """
lookup_fields = lookup_path.split('__') lookup_fields = lookup_path.split(LOOKUP_SEP)
# Remove the last item of the lookup path if it is a query term # Remove the last item of the lookup path if it is a query term
if lookup_fields[-1] in QUERY_TERMS: if lookup_fields[-1] in QUERY_TERMS:
lookup_fields = lookup_fields[:-1] lookup_fields = lookup_fields[:-1]

View File

@ -6,6 +6,7 @@ from collections import OrderedDict
from django.core.management.base import BaseCommand, CommandError from django.core.management.base import BaseCommand, CommandError
from django.db import DEFAULT_DB_ALIAS, connections from django.db import DEFAULT_DB_ALIAS, connections
from django.db.models.constants import LOOKUP_SEP
from django.utils.encoding import force_text from django.utils.encoding import force_text
@ -189,10 +190,10 @@ class Command(BaseCommand):
if num_repl > 0: if num_repl > 0:
field_notes.append('Field renamed to remove unsuitable characters.') field_notes.append('Field renamed to remove unsuitable characters.')
if new_name.find('__') >= 0: if new_name.find(LOOKUP_SEP) >= 0:
while new_name.find('__') >= 0: while new_name.find(LOOKUP_SEP) >= 0:
new_name = new_name.replace('__', '_') new_name = new_name.replace(LOOKUP_SEP, '_')
if col_name.lower().find('__') >= 0: if col_name.lower().find(LOOKUP_SEP) >= 0:
# Only add the comment if the double underscore was in the original name # Only add the comment if the double underscore was in the original name
field_notes.append("Field renamed because it contained more than one '_' in a row.") field_notes.append("Field renamed because it contained more than one '_' in a row.")

View File

@ -1617,7 +1617,7 @@ class Model(six.with_metaclass(ModelBase)):
# Skip ordering in the format field1__field2 (FIXME: checking # Skip ordering in the format field1__field2 (FIXME: checking
# this format would be nice, but it's a little fiddly). # this format would be nice, but it's a little fiddly).
fields = (f for f in fields if '__' not in f) fields = (f for f in fields if LOOKUP_SEP not in f)
# Skip ordering on pk. This is always a valid order_by field # Skip ordering on pk. This is always a valid order_by field
# but is an alias and therefore won't be found by opts.get_field. # but is an alias and therefore won't be found by opts.get_field.