+# -*- coding: utf-8 -*-
"""
Models and managers for generic tagging.
"""
+
# Python 2.3 compatibility
-if not hasattr(__builtins__, 'set'):
+try:
+ set
+except NameError:
from sets import Set as set
from django.contrib.contenttypes import generic
from django.db import connection, models
from django.utils.translation import ugettext_lazy as _
from django.db.models.base import ModelBase
+from django.core.exceptions import ObjectDoesNotExist
qn = connection.ops.quote_name
WHERE %(tagged_item)s.content_type_id = %(content_type_id)s
%%s
%(extra_where)s
- GROUP BY %(tag)s.id, %(tag)s.name
+ GROUP BY %(tag_columns)s, %(tag)s.id, %(tag)s.name
%%s
ORDER BY %(tag)s.%(ordering)s ASC""" % {
'tag': qn(self.model._meta.db_table),
unique_together = (('tag', 'content_type', 'object_id'),)
def obj_unicode(self):
- return u'%s [%s]' % (self.content_type.get_object_for_this_type(pk=self.object_id), self.tag)
-
+ try:
+ return u'%s [%s]' % (self.content_type.get_object_for_this_type(pk=self.object_id), self.tag)
+ except ObjectDoesNotExist:
+ return u'<deleted> [%s]' % self.tag
+
# Set up a dictionary to simulate declarations within a class
attrs = {
'__module__': model.__module__,