Ich habe eine Funktion, die ein Objekt id
übernimmt. Mit dieser ID kann ich das Objekt einer Tabelle object_1 = Object.objects.get(pk=id)
bekommen. Ich würde gerne die Object
Tabelle nach einer Position namens Votes geordnet haben. Zum Beispiel, objects = Object.objects.order_by('-votes')
und ich würde gerne die Position von object_1
in objects
finden.Django Abfrage geordnete Objekte gegeben Position
Wie konnte ich das erreichen? Soweit ich weiß, ist der Abfragesatz keine Liste, und ich müsste über alle Elemente iterieren, was ein großes Leistungsproblem darstellen würde, wenn ich viele Einträge in der Tabelle hätte.
Die Purpose von all dem ist, um eine nach Stimmen sortierte Rangordnung anzuzeigen, in der ich nur 6 Einträge zeige und die vierte sollte die des Objekts sein. Zum Beispiel, wenn ich für das Objekt gesucht 1, soll ich dies zeigen:
Position | Name | Votes
5 obj5 52
6 obj3 49
7 obj10 49
8 obj1 47
9 obj15 15
10 obj6 14
So würde Ich mag eine Abfrage mit obj5,obj3,obj10,obj1,obj15,obj6
in dieser Reihenfolge gesetzt bekommen. Die optimale Lösung wäre etwas wie: objects = Object.objects.order_by('-votes')[x-4:x+2]
wo x
ist die Position des Objekts, das ich suche.
ps: Ich verwende Python 2.7.9 und Django 1.9
Dies wird für jetzt tun, danke! – lpares12