Merge pull request #456 from JanBednarik/ticket_19151

Fixed #19151 -- Added missing methods to EmptyQuerySet.
This commit is contained in:
Alex Gaynor 2012-10-20 15:33:40 -07:00
commit 6b0d93df18
2 changed files with 19 additions and 0 deletions

View File

@ -1271,6 +1271,18 @@ class EmptyQuerySet(QuerySet):
kwargs[arg.default_alias] = arg
return dict([(key, None) for key in kwargs])
def values(self, *fields):
"""
Always returns EmptyQuerySet.
"""
return self
def values_list(self, *fields, **kwargs):
"""
Always returns EmptyQuerySet.
"""
return self
# EmptyQuerySet is always an empty result in where-clauses (and similar
# situations).
value_annotation = False

View File

@ -1698,6 +1698,13 @@ class EmptyQuerySetTests(TestCase):
[]
)
def test_ticket_19151(self):
# #19151 -- Calling .values() or .values_list() on an EmptyQuerySet
# should return EmptyQuerySet and not cause an error.
q = EmptyQuerySet()
self.assertQuerysetEqual(q.values(), [])
self.assertQuerysetEqual(q.values_list(), [])
class ValuesQuerysetTests(BaseQuerysetTest):
def test_flat_values_lits(self):