Frage

sage ich solches Modell haben:

class Foo(models.Model):
 name = models.CharField("name",max_length=25)
 type = models.IntegerField("type number")

, nachdem er einige Abfrage wie Foo.objects.filter tun (), möchte ich zu einer Gruppe das Abfrageergebnis als solche:

[  [{"name":"jb","type:"whiskey"},{"name":"jack daniels","type:"whiskey"}],
[{"name":"absolute","type:"vodka"},{name:"smirnoff ":"vodka"}],
[{name:"tuborg","type":beer}]
]

So wie Sie sehen können, Elemente als Liste der Wörterbücher zu gruppieren. Liste der Gruppenabfragelisten intead von Wörterbuch wäre auch willkommen:)

Viele Grüße

War es hilfreich?

Lösung

Sie können mit itertools.groupby() der Gruppierung Ihrer Ansicht nach tun.

Andere Tipps

Sie können dies mit der values Methode eines queryset:

http://docs.djangoproject.com/ de / 1.1 / ref / models / querysets / # Werte-Felder

  

Werte (* Felder)

     

Gibt eine ValuesQuerySet - ein QuerySet   dass auswertet, um eine Liste von   Wörterbücher statt Modell-Instanz   Objekte.

Schauen Sie sich die Neugruppierung Template-Tag. Wenn Sie die Gruppierung für die Anzeige in der Vorlage tun wollen, dann sollte das sein, was Sie brauchen. Ansonsten können Sie die Quelle lesen, um zu sehen, wie sie die Gruppierung erreichen.

Sie können diese Art von tun, indem order_by mit:

Foo.objects.order_by( "type" );
drinks = Foo.objects.all( )

Jetzt haben Sie eine Auswahl an Getränken nach Typ geordnet. Sie könnten dies nutzen oder eine Funktion schreiben, die Struktur, die Sie erstellen möchten, ohne es mit einem linearen Scan sortieren zu müssen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top