NoReverseMatch: Reverse not found from model with get_absolute_url

Your topic URL uses both subforum_slug and topic_slug, but Topic.get_absolute_url only passes topic_slug; try something like this:

return reverse('forum:topic', kwargs={'topic_slug': self.slug, 'subforum_slug': self.subforum.slug})

You need to pass all placeholders, there’s no magic inheritance or something. The same may apply to other URLs in your project, I didn’t check them.