﻿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
18463	Using len() in Paginator object can raise an error	renato@…	nobody	"I'm getting the following error if I try to run a piece of code through my views.py:

Traceback (most recent call last):
  File ""<console>"", line 1, in <module>
  File ""/home/mp/webapps/django/rep/app/views.py"", line 331, in search_species
    print len(recs)
  File ""/home/mp/webapps/django/lib/python2.7/django/core/paginator.py"", line 88, in __len__
    return len(self.object_list)
  File ""/home/mp/webapps/django/lib/python2.7/django/db/models/query.py"", line 87, in __len__
    self._result_cache = list(self.iterator())
  File ""/home/mp/webapps/django/lib/python2.7/django/db/models/query.py"", line 284, in iterator
    model_cls = deferred_class_factory(self.model, skip)
  File ""/home/mp/webapps/django/lib/python2.7/django/db/models/query_utils.py"", line 180, in deferred_class_factory
    return type(name, (model,), overrides)
TypeError: type() argument 1 must be string, not unicode

Strangely, if I run a similar code directly in the Django shell, everything goes well. The code looks like this: 

{{{
from app.models import MyClass
qs = MyClass.objects.all()
from django.core.paginator import Paginator
paginator = Paginator(qs, 25)
recs = paginator.page(1)
print len(recs)
}}}

So you have to run this code through a method in views.py to get a crash in the last line.

I'm afraid I have no idea of what's going on and how to properly fix this, but if I change the offending line from the traceback by forcing str() in the name parameter it works:

{{{
return type(str(name), (model,), overrides)
}}}"	Bug	new	Core (Other)	dev	Normal				Unreviewed	0	0	0	0	0	0
