El error en cuestión se produce cuando intenta acceder al Managerde un modelo a través de una instancia del modelo. Ha utilizado nombres de clases en minúsculas . Esto hace que sea difícil decir si el error es causado por una instancia que accede Managero no. Dado que se desconocen otros escenarios que pueden causar este error, procedo asumiendo que de alguna manera ha mezclado la topicvariable para que termine apuntando a una instancia del topicmodelo en lugar de la clase.
Esta línea es la culpable:
forum.topic_count = topic.objects.filter(forum = forum).count()
Tienes que usar:
forum.topic_count = Topic.objects.filter(forum = forum).count()
¿Qué va mal? objectsestá Managerdisponible a nivel de clase, no para las instancias. Consulte la documentación para recuperar objetos para obtener más detalles. Cotización de dinero:
Managersson accesibles solo a través de clases de modelo, en lugar de instancias de modelo, para imponer una separación entre las operaciones de "nivel de tabla" y las operaciones de "nivel de registro".
(Énfasis añadido)
Actualizar
Vea los comentarios de @Daniel a continuación. Es una buena idea (no, DEBE: P) usar mayúsculas y minúsculas para los nombres de las clases. Por ejemplo, en Topiclugar de topic. Los nombres de sus clases causan cierta confusión ya sea que se refiera a una instancia o una clase. Dado que el Manager isn't accessible via <model> instanceses muy específico, puedo ofrecer una solución. El error puede no ser tan evidente siempre.
topicparece ser la clase de modelo real, y no una instancia según el código que proporcionó.