Frage

Ich habe mehrere Modelle und will eine queryset aller Modelle zurück zu einem Benutzer gehören, ich frage mich, ob man über eine Queryset von mehreren Modellen zurück?

War es hilfreich?

Lösung

Ich gehe davon aus, dass Sie meinen Sie möchten eine einzige queryset aller Objekte von jedem Modell den Benutzer gehören, zurückzukehren.

Sie benötigen einen queryset oder einfach nur ein iterable? AFAIK, heterogene qs ist nicht möglich. Sie können jedoch leicht eine Liste zurück, eine verkettete Iterator (itertools) oder einen Generator zu tun, was Sie wollen. Dies setzt voraus, dass die Modelle den Benutzer verweisen, vor der Zeit bekannt. Unter der Annahme, Standard related_name, bezogen queryset Attribute von Benutzerinstanz über den Modellnamen zugegriffen werden kann:

qs = getattr(user, '%s_set' % model_name.lower());

Natürlich unter Verwendung eines beliebigen heterogenen Liste würden Sie entweder nur in der Lage sein, Felder oder Methoden zu verwenden, die über alle solche Modelle definiert sind, oder würden Sie den Typ jedes Objekts zu bestimmen, um jede Art spezifische Aktionen zu tun.

Andere Tipps

Ihre Modelle müssen Beziehung Felder (ForeigKey und ManyToManyField) enthalten, mit related_name Schlüsselwort-Argument gesetzt. Prüfen Dokumentation hier .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top