Können Sie ein benutzerdefiniertes Vorlagen-Tag erstellen, das ein Abfrage-Set zurückgibt? Wenn ja, wie? - Django

8

Machen wir das meinen Mitmenschen so leicht (?).

So funktionieren normalerweise die benutzerdefinierten Vorlagen-Tags -

Vorlage - & gt;

%Vor%

Der custom_tag_load wird aufgerufen und gibt eine Zeichenfolge zurück. Was ich zurückgeben möchte, ist ein Abfrage-Set, das ich möglicherweise so verwenden könnte - & gt;

%Vor%

Hinweis - & gt; Was ich im Grunde versuche zu tun, ist zu vermeiden, den Queryset durch die Ansicht zu übergeben, und ich bin mir nicht sicher, ob ich in der Lage sein sollte, Abfragesätze in meinem globalen Kontext zu speichern.

    
Sussagittikasusa 31.10.2011, 12:56
quelle

2 Antworten

5

Sie können alles, was Sie möchten, aus einem Tag zurückgeben, einschließlich eines Abfrage-Sets. Sie können jedoch kein Tag innerhalb des Tags for verwenden - Sie können dort nur eine Variable (oder eine Variable, die einen Filter durchlaufen hat) verwenden. Sie können Ihr Tag dazu bringen, das Abfrage-Set in eine Variable im Kontext einzufügen und diese Variable in der for-Schleife zu verwenden. In den Dokumenten zu finden Sie Informationen zum Festlegen einer Variablen von einem Tag - obwohl beachten Sie, dass die Entwicklungsversion einfacher ist Methode , um dies zu tun.

Sie sollten sich jedoch keine Gedanken darüber machen, wie Sie ein Abfrage-Set in einen Kontext-Prozessor einfügen. Vergessen Sie nicht, dass die Abfragesätze träge sind. Daher wird kein Datenbanktreffer ausgeführt, es sei denn, der Abfragesatz wird in der Vorlage ausgewertet oder iteriert.

    
Daniel Roseman 31.10.2011, 13:06
quelle
2

Ein Schablonen-Tag kann alles machen, was Sie wollen. Von Ihrem Pseudocode aus können Sie mit einem Inclusion-Tag erreichen, was Sie brauchen:

%Vor%

Alternativ könnten Sie ein benutzerdefiniertes Tag schreiben, das dem Kontext ein Abfrageset hinzufügt. Hoffe, dass dir das hilft.

    
Brandon 31.10.2011 13:06
quelle

Tags und Links