2009-08-02 12 views
12

Quindi ho due modelli, un modello di classifica e un modello di UserRanking. L'app si concentra sulle persone che prendono una lista di oggetti e li classifica (es: "I migliori film del 2008"). Il modello di classifica è l'elenco classificato globale aggregato, calcolato da tutti i diversi UserRankings creati dagli utenti per tale elenco. Quindi, per ogni classifica, ci sono diversi UserRankings, esattamente uno per ogni utente che ha espresso la propria opinione inviando la propria versione della lista. Il modello UserRanking ha un campo ForeignKey chiamato "ranking" che punta verso il modello Ranking.Molto confuso ... problema con 'annotate' in Django

In ogni caso, sto cercando di raccogliere le classifiche popolari. Il mio primo passo è quello di ottenere la classifica con la maggior parte UserRankings associati a loro utilizzando questa riga di codice:

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

Tuttavia, Django mi dà un NameError e dice: "nome globale 'Count' non è definito". Non si lamenta dell'annotazione (che è disponibile solo nella versione di sviluppo di Django), quindi significa che lo sviluppo di Django funziona correttamente? "Count" è chiaramente descritto nei documenti Django come una delle numerose funzioni di aggregazione che possono essere utilizzate come argomento per l'annotazione. Questo non ha assolutamente senso.

Infatti, l'ho appena testato e sono riuscito a visualizzare la mia pagina usando annotazioni senza parametri e non mi ha dato alcun errore (ovviamente ho rimosso anche order_by). Quindi annotare funziona sicuramente!

risposta

32

Hai importato il conteggio da django.db.models?

+3

Non riesco a credere che la risposta sia stata così semplice. Sapevo che stavo facendo qualcosa di stupido, ma non proprio stupido! Grazie, buona giornata =) –

Problemi correlati