Django - geben Sie die Modell-manager Django admin verwenden sollte

Habe ich einen custom-Manager für eine Django-Modell, das gibt ein QuerySet holding eine Teilmenge von Objekten.alle(). Ich brauche dieses, um das Modell der Standard-Manager, da bin ich auch erstellen ein benutzerdefiniertes tag, das abrufen von Inhalten von jedem Modell (angegeben durch ein argument), und muss für die Verwendung der Standard-Manager für das angegebene Modell. All das funktioniert gut, außer - Django-Admin ist AUCH mit der Standard-Manager für dieses Modell, was bedeutet, dass nicht alle Modell-Instanzen angezeigt werden, die in der admin.

Die Django-docs nicht helfen:

Wenn Sie benutzerdefinierte Manager-Objekte, beachten Sie, dass der erste Manager Django trifft auf (im
die Reihenfolge, in der Sie definiert sind, in das Modell) hat einen besonderen status. Django interpretiert diese erste Manager in einer Klasse definiert, wie der "Standard" - Manager und mehrere Teile von Django (zwar nicht der admin-Anwendung) verwenden, die Manager ausschließlich für dieses Modell.
(Django-Manager-Dokumentation)

Admin soll nicht die Verwendung der Standard-Manager, aber es scheint zu sein in meinem Fall. Beachten Sie, dass ich auch explizit hinzufügen, die Standard-Manager objects:

subset = CustomManager() # the default manager
objects = models.Manager() # the one I want admin to use

Wie kann ich festlegen, welche Manager die admin verwenden soll?

  • Ich war auch ausgelöst durch den Bereich, den Sie markiert in der admin-docs. Es ist eines der wenigen Male, die ich gefunden habe die django-docs zu mehrdeutig sein.
  • Seltsam. Betrachtet man die neueste Django-Quelle, es sieht aus, als wenn der admin nicht den Standard-manager.
  • der admin hat die Standard-manager seit mindestens Django 1.0. Das Problem hier ist eher eine Dokumentation, ein bug, der behoben wurde github.com/django/django/commit/...
  • Guter Punkt. Vielen Dank für den Verweis 🙂
  • eine der [sic] paar Male, die ich gefunden habe die django-docs zu zweideutig sein." LOL.
  • Es wäre genauer gewesen, wenn ich gesagt habe "es ist die einzige Zeit, die ich gefunden habe, die docs zu mehrdeutig". Es ist fünf Jahre her, seit ich schrieb diesen Kommentar, und ich denke immer noch die Django-docs sind ausgezeichnet. Helfenden wirklich über das schreiben guter Dokumente, nicht nur der Landung neuen features. Dieses bestimmte Problem wurde behoben, 2010.
  • bei allem Respekt, kann ich nur teilweise mit dir einverstanden. Während ich schätzen die Mitwirkenden Dokumentation Bemühungen, wenn ich, wie Sie ein Dokument an eine person, Porträt, zu oft finde ich, dass eher als ein Porträt, Sie nur die Umrisse von jemandem, der Kopf. Ich weiß, dass ist eine komische Analogie, aber es passt. Aber dann bin ich ein relativer Django "newbie" also, meine Anforderungen sind wahrscheinlich viel anders als deins. Cheers.

InformationsquelleAutor Chris Lawlor | 2009-10-09
Schreibe einen Kommentar