2009-08-19 9 views
0

ich eine harte Zeit, um den Titel zu formulieren hatte, so bitte sie bearbeiten, wenn Sie eine bessere one :)Wie eine Liste füllen mit Items.Count() von einem queryset von einem Datetime-Feld sortiert

Ich bin versuchen, einige Statistiken mit dem Pygooglechart anzuzeigen. Und ich verwende Django, um die Datenbankelemente aus der Datenbank zu holen.

Die Datenbankelemente haben ein Datetime-Feld, das ich "sortieren" möchte. Was ich wirklich will, ist eine Liste wie diese zu füllen.

data = [10, 12, 51, 50] 

Wo jedes Listenelement die Anzahl (Anzahl) von Datenbankelementen innerhalb einer Stunde ist. Also sagen wir, ich mache eine Abfrage, die alle Artikel in den letzten 72 Stunden bekommt, ich möchte die Anzahl von jeder Stunde in einem Listenelement sammeln. Hat jemand einen guten Weg dies zu tun?

+0

Warum hast du das zu einem Community-Wiki gemacht? Es sollte eine reguläre Frage sein. Imo – priestc

+0

Es gibt keine Regeln und was kann und kann kein Community-Wiki sein. Wenn du es zu einem Wiki machen willst (für was auch immer), kannst du es. – Travis

Antwort

2

Angenommen, Sie laufen Django 1.1 oder eine relativ neue Kasse, können Sie die neue aggregation features verwenden. Etwas wie:

counts = MyModel.objects.values('datettimefield').annotate(Count('datettimefield')) 

Diese tatsächlich bekommt man eine Liste der Wörterbücher:

[{'datetimefield':<date1>, 'datettimefield__count':<count1>}, 
{'datetimefield':<date2>, 'datettimefield__count':<count2>}, ...] 

aber es sollte ziemlich einfach sein, eine Liste Verständnis, schreiben Sie das gewünschte Format zu erhalten.

Nach dem Kommentar bearbeitet: Wenn Sie auf 1.0.2 sind, ist die effizienteste Sache zu tun, um auf Raw SQL zurückgreifen.

+0

Leider läuft 1.0.2 auf diesem Projekt, irgendwelche Hinweise auf das Verständnis der Liste? Ich kann nicht scheinen, dass ich richtig arbeite. – espenhogbakk

Verwandte Themen