Breves: coercing to Unicode y gettext en Django
Siguiendo con el desarrollo del módulo de noticias, he encontrado el mismo error, pero esta vez debido al uso de gettext:
>>> model_instance.objects.all()
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/lib/pymodules/python2.6/django/db/models/query.py", line 71, in __repr__
return repr(data)
File "/usr/lib/pymodules/python2.6/django/db/models/base.py", line 345, in __repr__
u = unicode(self)
TypeError: coercing to Unicode: need string or buffer, __proxy__ found
Normalmente utilizo ugettext_lazy (proporcionado por Django en utils.translation) por cuestiones de eficiencia. El problema proviene del mismo sitio: def __unicode__(self)
Es muy importante que nos aseguramos que siempre se devuelva una instancia de unicode, si no, este método causará un error. Por tanto, en lugar de lo siguiente:
from django.utils.translation import ugettext_lazy as _
...
class Entry(models.Model):
...
def __unicode__(self):
return _(u'Entry %s' % self.pk)
debemos hacer esto:
from django.utils.translation import ugettext as _ ... class Entry(models.Model): ... def __unicode__(self):
return _(u'Entry %s' % self.pk)
Tags
La teoría es cuando crees saber algo, pero no funciona.
La práctica es cuando algo funciona, pero no sabes por qué.
Los programadores combinan la teoría y la práctica:
Nada funciona y no saben por qué.
