Ich versuche Positionsfeld für alle Objekte in einer bestimmten Reihenfolge auf einmal in Django (Python) zu aktualisieren.Aktualisieren Sie alle Modelle auf einmal in Django
Dies ist, wie ich es jetzt getan habe, aber das Problem ist, dass es eine Menge von Abfragen macht.
servers = frontend_models.Server.objects.all().order_by('-vote_count')
i = 1
for server in servers:
server.last_rank = i
server.save()
i += 1
Gibt es eine Möglichkeit mit
Model.objects.all().order_by('some_field').update(position=some_number_that_changes_for each_object)
Danke zu aktualisieren!
Sie möchten die übergebene Zahl für jedes Objekt erhöhen? –
django Abfrage API habe nicht [Windows-Funktionen] (http://www.postgresql.org/docs/9.1/static/tutorial-window.html) (denke ich). Sie sollten [custom sql direkt] (https://docs.djangoproject.com/en/dev/topics/db/sql/#executing-custom-sql-directly) ausführen, wenn Ihr RDBMS über diese Funktion verfügt. – danihp