El error en cuestión se produce cuando intenta acceder al Manager
de 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 Manager
o no. Dado que se desconocen otros escenarios que pueden causar este error, procedo asumiendo que de alguna manera ha mezclado la topic
variable para que termine apuntando a una instancia del topic
modelo 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? objects
está Manager
disponible a nivel de clase, no para las instancias. Consulte la documentación para recuperar objetos para obtener más detalles. Cotización de dinero:
Managers
son 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 Topic
lugar 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> instances
es muy específico, puedo ofrecer una solución. El error puede no ser tan evidente siempre.
topic
parece ser la clase de modelo real, y no una instancia según el código que proporcionó.