﻿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
7791	len() on queryset with distinct ordered by child's field crashes	Ivan Sagalaev	Malcolm Tredinnick	"Given this model:

{{{
#!python
class Restaurant(models.Model):
    title = models.CharField(max_length=50)

class Pizza(models.Model):
    restaurant = models.ForeignKey(Restaurant)
    title = models.CharField(max_length=50)
}}}

and this data (one test record for each model):

{{{
[
  {
    ""pk"": 1, 
    ""model"": ""main.restaurant"", 
    ""fields"": {
      ""title"": ""Karlo""
    }
  }, 
  {
    ""pk"": 1, 
    ""model"": ""main.pizza"", 
    ""fields"": {
      ""title"": ""Margherita"", 
      ""restaurant"": 1
    }
  }
]
}}}

calling len() on a queryset with distinct ordered by child's field:

{{{
#!python
len(Restaurant.objects.order_by('pizza__title').distinct())
}}}

gives this traceback:

{{{
Traceback (most recent call last):
  File ""./manage.py"", line 13, in <module>
    len(Restaurant.objects.order_by('pizza__title').distinct())
  File ""/home/isagalaev/py/django/db/models/query.py"", line 153, in __len__
    self._result_cache = list(self.iterator())
  File ""/home/isagalaev/py/django/db/models/query.py"", line 273, in iterator
    obj = self.model(*row[index_start:])
  File ""/home/isagalaev/py/django/db/models/base.py"", line 184, in __init__
    raise IndexError(""Number of args exceeds number of fields"")
IndexError: Number of args exceeds number of fields
}}}"		closed	Database layer (models, ORM)	dev		fixed			Accepted	0	0	0	0	0	0
