#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.

Reply via email to