Given this model:
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:
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