def get_reverse_joining_columns(self): return self.get_joining_columns(reverse_join=True) @property def related_fields(self): return [(self.through._meta.get_field_by_name('object_id')[0], self.model._meta.pk)] @property def foreign_related_fields(self): return [self.related_fields[0][1]] def _get_subclasses(model): subclasses = [model] for f in model._meta.get_all_field_names(): field = model._meta.get_field_by_name(f)[0] if (isinstance(field, RelatedObject) and getattr(field.field.rel, "parent_link", None)): subclasses.extend(_get_subclasses(field.model)) return subclasses # `total_ordering` does not exist in Django 1.4, as such # we special case this import to be py3k specific which # is not supported by Django 1.4 if six.PY3: from django.utils.functional import total_ordering TaggableManager = total_ordering(TaggableManager)