Cache-bezogene Django-Felder ForeignKey und ManyToManyField, wenn auf sie zugegriffen wird?

8

Hat Django die folgenden Objekte nach dem ersten Zugriff auf das folgende Modell im Cache?

%Vor%

Zum Beispiel:

%Vor%

Hinweis: Derzeit wird mit Django 1.3 gearbeitet, aber es ist gut zu wissen, was in anderen Versionen verfügbar ist.

    
bpscott 29.11.2011, 19:19
quelle

1 Antwort

5

Im ersten Beispiel wird die zweite Abfrage zwischengespeichert . Im zweiten Fall (glaube ich) werden beide einen DB-Treffer verursachen, es sei denn, Sie verwenden select_related für die ursprüngliche Abfrage:

%Vor%

BEARBEITEN

Ich liege falsch im zweiten Beispiel. Wenn Sie select_related in der ursprünglichen Abfrage verwenden, werden Sie die Datenbank überhaupt nicht mehr treffen (Der ForeignKey wird sofort zwischengespeichert). Wenn Sie select_related nicht verwenden, treffen Sie die Datenbank bei der ersten Abfrage, aber die zweite Abfrage wird zwischengespeichert.

Von:

Ссылка

  

Der Zugriff auf Eins-zu-Viele-Beziehungen wird beim ersten Zugriff auf das zugehörige Objekt zwischengespeichert. Nachfolgende Zugriffe auf den Fremdschlüssel auf derselben Objektinstanz werden zwischengespeichert.

     

Beachten Sie, dass die Methode select_related () QuerySet den Cache aller 1: n-Beziehungen im Voraus rekursiv vorab auffüllt.

    
Timmy O'Mahony 29.11.2011, 19:25
quelle

Tags und Links