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

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

Post 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.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post