2009-08-02 15 views
12

Tengo dos modelos, un modelo de Ranking y un modelo UserRanking. La aplicación se centra en personas que toman una lista de elementos y los clasifican (por ejemplo, "Mejores películas de 2008"). El modelo de Ranking es la lista general de clasificación global, que se calcula a partir de todos los UserRankings diferentes que la gente crea para esa lista. Entonces, para cada Ranking, hay un montón de UserRankings diferentes, exactamente uno para cada usuario que dio su opinión al enviar su versión clasificada de la lista. El modelo UserRanking tiene un campo ForeignKey llamado 'ranking' que apunta hacia el modelo de Ranking.Muy confuso ... problema al usar 'anotar' en Django

De todos modos, estoy tratando de reunir los rankings populares. Mi primer paso es conseguir la clasificación, con la mayoría de UserRankings asociados a ellos utilizando esta línea de código:

popular = Ranking.objects.all().annotate(num_user_rankings=Count('userranking')).order_by('num_user_rankings')[:50] 

Sin embargo, Django me da un NameError y dice: " 'conde' nombre global no está definido". No se queja de anotar (que solo está disponible en la versión de desarrollo de Django), por lo que significa que el desarrollo de Django está funcionando ¿verdad? 'Count' se describe claramente en los documentos de Django como una de las varias funciones de agregación que se pueden usar como arg para anotar. Esto no tiene ningún sentido.

De hecho, acabo de probarlo, y pude hacer que mi página se muestre usando anotaciones sin parámetros, y no me dio ningún error (obviamente también eliminé el order_by). ¡Así que anotar funciona con seguridad!

Respuesta

32

¿Importó Count desde django.db.models?

+3

No puedo creer que la respuesta haya sido tan simple. Sabía que estaba haciendo algo estúpido, ¡pero no tan estúpido! Gracias, que tengas un gran día =) –

Cuestiones relacionadas