#18463: Using len() in Paginator object can raise an error
------------------------------+--------------------
Reporter: renato@… | Owner: nobody
Type: Bug | Status: new
Component: Core (Other) | Version: master
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Easy pickings: 0 | UI/UX: 0
------------------------------+--------------------
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)
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/18463>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/django-updates?hl=en.