Вы можете использовать менеджер get_related , который будет:
Получить список экземпляров указанной модели, которые совместно используют теги с экземпляром модели obj, упорядоченные по количеству общихтеги в порядке убывания.
Чтобы использовать это, вы можете создать тег шаблона, например:
@register.inclusion_tag(your_template)
def related_objects(object, limit=3):
objects = TaggedItem.objects.get_related(object,object.__class__)
return {'objects': objects[:limit]}
Редактировать для комментария
чтобы получить список похожих тегов, вы можете использовать related_for_model, который будет возвращать "другие теги, используемые элементами, которые имеют все указанные теги"