-
Notifications
You must be signed in to change notification settings - Fork 34
Description
I've used {{ item|typogrify }} without issue a billion times if not more, but today I discovered a problem that has me completely baffled.
Here are two absolutely identical model methods:
def blah(self):
return self.destination_content_object.__unicode__()
def __unicode__(self):
return self.destination_content_object.__unicode__()
Now if in my template I do {{ item.blah|typogrify }}, it'll work perfectly. If I do the same with {{ item|typogrify }}, there's a template error.
This is the weird thing:
- without the
typogrifyfilter, the model's__unicode__()gets called - with the
typogrifyfilter, the model's it doesn't
And when it doesn't get called, what happens is that the typogrify tags, instead of receiving the unicode that they expect, receive a model object that they naturally choke on.
So it seems to me that typogrify is somehow intercepting the contents of the template before Django is able to turn the {{ item }} into unicode, if that makes sense.
(Just to add to the complexity of this, the template belongs to a django CMS plugin, which has a habit of swallowing up errors and making them harder to debug.)