Derzeit führt Django eine separate Abfrage zum Abrufen jeder einzelnen dataset[i]
und eine abschließende Abfrage, wenn dataset
ausgewertet wird.
Die Lösung besteht darin, den Abfragesatz zu erzwingen, indem er in eine Liste konvertiert wird. Sie müssen len()
anstelle von count()
verwenden.
def cumulate(self, dataset):
dataset = list(dataset)
nb = 0
for i in range(len(dataset)):
nb += dataset[i]['nb']
dataset[i]['nb'] = 99
print(dataset[i]['nb'])
return dataset
Es wäre pythonischer, über das Abfrage-Set zu iterieren, anstatt den Bereich zu durchlaufen. In diesem Fall führt eine Schleife über das Abfrage-Set dazu, dass es ausgewertet wird, und ich denke nicht, dass Sie es in eine Liste konvertieren müssen.
def cumulate(self, dataset):
nb = 0
for d in dataset:
nb += d['nb']
d['nb'] = 99
print(d['nb'])
return dataset
Ist 'Dataset' ein Queryset oder ist es etwas anderes? Wie geschrieben, gibt es hier nichts spezifisch Django. Was versuchst du zu erreichen? – Sayse
Ich versuche, Elemente des Datasets zu ändern. Dataset ist ein Django-Abfrage-Set. Mit der values-Methode können wir iterate für Elemente als Wörterbücher verwenden – user2080105
Werte "Gibt ein QuerySet zurück, das Wörterbücher zurückgibt" was nicht ganz dasselbe ist, ich bin mir immer noch nicht ganz sicher, was Sie gerade versuchen – Sayse