Page 1 of 1

Gibt `.All ()` in Django die Datenbank erneut oder verwenden Sie den Cache?

Posted: 02 Feb 2025, 08:03
by Anonymous
Ich bekomme sehr widersprüchliche Nachrichten. Aus Django Queryset -Dokumenten lese ich (https://docs.djangoproject.com/en/5.1/r ... eryset.all). >
Wenn ein QuerySet bewertet wird, wird typischerweise seine Ergebnisse zwischengespeichert. Wenn sich die Daten in der Datenbank möglicherweise geändert haben, seit ein QuerySet bewertet wurde, können Sie aktualisierte Ergebnisse für dieselbe Abfrage erhalten, indem Sie alle () auf einem zuvor ausgewerteten QuerySet aufrufen. < /P>
< /blockquote>
Aber dann unter dem Abschnitt Prefetch_related zeigt es, dass die Verwendung von .All () in den Sub-Objects Ergebnisse aus dem Cache verwendet: < Br />

Code: Select all

>>> restaurants = Restaurant.objects.prefetch_related(
...     Prefetch("pizzas", queryset=queryset),
... )
>>> vegetarian_pizzas = restaurants[0].pizzas.all()
Hier löst anscheinend vegetarian_pizzas keine Datenbankabfrage aus. ) eigentlich? Warum löst es eine Datenbankabfrage an der Außenübernahme aus, aber dann nicht für Unterobjekte? Ich bin verwirrt.