[8721] introduced some internal field names. We hide them from the list of

valid field names in debugging output so that it doesn't confuse things.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@8730 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Malcolm Tredinnick 2008-08-30 04:52:56 +00:00
parent c60e22c073
commit fd0cc45828
2 changed files with 13 additions and 2 deletions

View File

@ -280,7 +280,9 @@ class Options(object):
def get_all_field_names(self):
"""
Returns a list of all field names that are possible for this model
(including reverse relation names).
(including reverse relation names). This is used for pretty printing
debugging output (a list of choices), so any internal-only field names
are not included.
"""
try:
cache = self._name_map
@ -288,7 +290,9 @@ class Options(object):
cache = self.init_name_map()
names = cache.keys()
names.sort()
return names
# Internal-only names end with "+" (symmetrical m2m related names being
# the main example). Trim them.
return [val for val in names if not val.endswith('+')]
def init_name_map(self):
"""

View File

@ -52,5 +52,12 @@ __test__ = {"regressions": """
>>> e1.related.all()
[<Tag: t2>]
# The secret internal related names for self-referential many-to-many fields
# shouldn't appear in the list when an error is made.
>>> SelfRefer.objects.filter(porcupine='fred')
Traceback (most recent call last):
...
FieldError: Cannot resolve keyword 'porcupine' into field. Choices are: id, name, references, related
"""
}