Django Admin: Wie kann man auf das Anfrageobjekt in admin.py für list_display-Methoden zugreifen?
Habe ich eine Methode 'highlight_link" zu meiner model s admin.py Klasse:
class RadioGridAdmin(admin.ModelAdmin):
list_display = ('start_time', highlight_link)
def highlight_link(self):
return ('some custom link')
admin.site.register(RadioGrid, RadioGridAdmin)
Gibt es eine benutzerdefinierte Verknüpfung für (habe ich weggelassen highlight_link.short_description aus Platzgründen) jeder Datensatz zurückgegeben in der Liste ändern. Das ist toll. Aber ich würde gerne überprüfen der aktuellen Abfrage-string und ändern Sie die benutzerdefinierte Verknüpfung, die Grundlage. Gibt es eine Möglichkeit Zugriff auf das Request-Objekt innerhalb 'highlight_link'?
InformationsquelleAutor der Frage Erik | 2009-04-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
InformationsquelleAutor der Antwort user27478
Ich lösen mein Problem auf diese Weise.
Jetzt kann ich mit
self.request
in jedem OrtUPDATE
InformationsquelleAutor der Antwort Diego Puente
Gibt es keine direkte Möglichkeit, dies zu erreichen. Ich sehe 2 mögliche Lösungen.
Verwenden ein thread einheimischen Geschäft zu gleichen request-Objekt
Wenn Sie einfach nicht-Thread-Django-installation ist es möglich, zu speichern request-Objekt nur als Attribut:
InformationsquelleAutor der Antwort Alex Koshelev
Versuchte ich die anderen Antworten hier Links ab und lief in Probleme, die für mich, waren immer Komplex. Ich spielte mit
def __call__()
und kam mit der folgenden. Dies ist wahrscheinlich nicht der richtige Weg, dies zu tun, aber es funktioniert...greifen die GET-variable hier (alle innerhalb der Klasse RadioGridAdmin wie oben beschrieben in meinem ersten post):
und da es auf der globalen, können Sie nun Zugriff auf das hier:
InformationsquelleAutor der Antwort Erik
InformationsquelleAutor der Antwort react
Kleine code-klären Diego Puente Antwort (python 3.6):
So können Sie
self.request
von jeder anderen Methode derMyClassAdmin
.Wenn definieren
self.request
imget_queryset
- Methode (ohne Sie zu deklarieren in__init__
) PyCharm generiert eine WarnungInstance attribute attribute_name defined outside __init__
.InformationsquelleAutor der Antwort valex
Dies ist eine bearbeitete version von @user27478 Antwort, die verwendet thread-local-vars:
InformationsquelleAutor der Antwort Taha Jahangir
Beschrieben, wie umgestalten, diese in einer mixinmit der Ergänzung des thread-safety bisschen auf @taha-jahangir ' s Antwort. Hier ist das mixin:
Unterklasse ModelAdmin mit Mixins:
... und Sie können einfach anrufen
self.get_request()
von keiner Methode.InformationsquelleAutor der Antwort Marcel Chastain
Was ist falsch mit dieser:
InformationsquelleAutor der Antwort josh