+class TagRelation(models.Model):
+
+ tag = models.ForeignKey('Tag', models.CASCADE, verbose_name=_('tag'), related_name='items')
+ content_type = models.ForeignKey(ContentType, models.CASCADE, verbose_name=_('content type'))
+ object_id = models.PositiveIntegerField(_('object id'), db_index=True)
+ content_object = GenericForeignKey('content_type', 'object_id')
+
+ objects = TaggedItemManager()
+
+ class Meta:
+ db_table = 'catalogue_tag_relation'
+ unique_together = (('tag', 'content_type', 'object_id'),)
+
+ def __str__(self):
+ try:
+ return '%s [%s]' % (self.content_type.get_object_for_this_type(pk=self.object_id), self.tag)
+ except ObjectDoesNotExist:
+ return '<deleted> [%s]' % self.tag
+
+
+class Tag(models.Model):