Django Queryset über Modelle hinweg?

8

Ich habe mehrere Modelle und möchte ein Abfrageset aller zu einem Benutzer gehörenden Modelle zurückgeben. Ich frage mich, ob es möglich ist, ein Abfrageset von mehreren Modellen zurückzugeben?

    
Rasiel 10.12.2008, 20:07
quelle

2 Antworten

8

Ich gehe davon aus, dass Sie meinen, dass Sie aus jedem Modell einen einzelnen Abfragesatz aller Objekte zurückgeben möchten, die dem Benutzer gehören.

Benötigen Sie ein Abfrage-Set oder nur ein iterables? AFAIK, heterogene qs sind nicht möglich. Sie können jedoch eine Liste, einen verketteten Iterator (itertools) oder einen Generator zurückgeben, um das zu tun, was Sie wollen. Dies setzt voraus, dass die Modelle, die auf den Benutzer verweisen, im Voraus bekannt sind. Unter der Annahme, dass default related_name ist, können verwandte Abfrageattribute von der Benutzerinstanz aus über den Modellnamen aufgerufen werden:

%Vor%

Natürlich können Sie bei Verwendung einer heterogenen Liste entweder nur Felder oder Methoden verwenden, die für alle diese Modelle definiert sind, oder Sie müssen den Typ jedes Objekts bestimmen, um typspezifische Aktionen auszuführen.

>     
Wayne Werner 11.12.2008, 23:03
quelle
3

Ihre Modelle müssen Beziehungsfelder (ForeigKey und ManyToManyField) enthalten, wobei das Schlüsselwort-Argument related_name festgelegt sein muss. Lesen Sie die Dokumentation hier .

    
Lazin 10.12.2008 20:55
quelle