﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
25609	Add a more useful error message for invalid nested lookup on a related field	Ian Foote	Ian Foote	"If I have two models:

{{{#!python
class Author(models.Model):
    name = models.CharField(max_length=255)

class Article(models.Model):
    author = models.ForeignKey(Author)
}}}

and I make the following invalid query:

{{{#!python
Article.objects.filter(author__editor__name='James')
}}}

I get the unhelpful:

{{{#!python
    Article.objects.filter(author__editor__name='James')
  File ""django/db/models/manager.py"", line 125, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File ""django/db/models/query.py"", line 783, in filter
    return self._filter_or_exclude(False, *args, **kwargs)
  File ""django/db/models/query.py"", line 801, in _filter_or_exclude
    clone.query.add_q(Q(*args, **kwargs))
  File ""django/db/models/sql/query.py"", line 1239, in add_q
    clause, _ = self._add_q(q_object, self.used_aliases)
  File ""django/db/models/sql/query.py"", line 1265, in _add_q
    allow_joins=allow_joins, split_subq=split_subq,
  File ""django/db/models/sql/query.py"", line 1189, in build_filter
    assert len(lookups) == 1
AssertionError
}}}

I propose making the error instead:

{{{#!python
TypeError: Related Field got invalid lookup: editor
}}}

Which matches that caused by:

{{{#!python
Article.objects.filter(author__editor='James')
}}}"	Cleanup/optimization	closed	Database layer (models, ORM)	1.9b1	Normal	fixed			Ready for checkin	1	0	0	0	0	0
