﻿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
30655	len(queryset) and queryset.count() return different results	Sander Kleijwegt	nobody	"According to the queryset.count() documentation ""you should always use count() rather than loading all of the record into Python objects and calling len() on the result"" (see [https://docs.djangoproject.com/en/2.0/ref/models/querysets/#count here]), which seems to imply that the results of both functions should always be identical. Here is a simple example that shows the contrary.

Models:
{{{
class Bar(models.Model):
        pass

class Foo(models.Model):
        fooint = models.IntegerField()
        foobar = models.ForeignKey(Bar, related_name='foos', on_delete=models.CASCADE)
}}}

Shell Output:
{{{
>>> import django
>>> django.__version__
'2.2.3'
>>> from foobar.models import Foo, Bar
>>> bar = Bar.objects.create()
>>> foo1 = Foo.objects.create(fooint=1, foobar=bar)
>>> foo2 = Foo.objects.create(fooint=2, foobar=bar)
>>> Bar.objects.all().order_by('foos__fooint').count()
1
>>> len(Bar.objects.all().order_by('foos__fooint'))
2
>>> Bar.objects.all().order_by('foos__fooint')
<QuerySet [<Bar: Bar object (1)>, <Bar: Bar object (1)>]>
}}}"	Bug	new	Uncategorized	2.2	Normal				Unreviewed	0	0	0	0	0	0
