2017-04-10 2 views
0

Nach queryset AktualisierungDjango-Queryset nach dem Aufruf von update()?

queryset.update(quantity=F('quantity') + increment_amount) 

serializer = MySerializer(queryset, many=True, context={'product': product}) 

serializer.data # here sometimes wrong old data 
queryset.values() # shows correct data. 

Wenn ich queryset (in DRF) zu bewerten, wäre es das Update enthält ich oben gemacht?

Mein Teamkollege fand manchmal DRF serialisierte Daten nicht die aktualisierte Info.

Aber queryset.values() zeigt die korrekte aktualisierte Info.

Ich kann das nicht reproduzieren und wir haben schwer zu googeln.

+1

Können Sie die vollen Serializer veröffentlichen oder zumindest die Methoden, die den Produktkontext und alle benutzen? Was meinst du, manchmal falsche alte Daten? Der obige Code ist das einzige was du tust? und gibt dir manchmal alte Daten? –

+0

@BogdanIulianBursuc ah Ich habe festgestellt, dass wir die Menge berechnen, wenn wir das Queryset serialisieren, und es kann nicht der rohe Datenbankwert sein ... danke für den Hinweis ... schließen .. – eugene

Antwort

0

Wenn ich Abfrage-Set (in DRF) auswerte, würde es das Update enthalten, das ich oben gemacht habe?

Es sollte.

Mein Teamkollege gefunden manchmal DRF serialisierte Daten hat nicht die aktualisierte Informationen.

Weil Sie das Abfrage-Set nach der Aktualisierung nicht neu bewerten.

Aber queryset.values ​​() zeigt die korrekten aktualisierten Informationen an.

Weil das das Abfrage-Set neu auswertet.

Versuchen mit:

queryset.update(quantity=F('quantity') + increment_amount) 

serializer = MySerializer(queryset.all(), many=True, context={'product': product}) 

serializer.data # Should always contain up to date data. 
Verwandte Themen