Ich habe ein boolesches Feld auf meinem Modell, das angibt, ob jemand seine Mitgliedschaft abgebrochen hat oder nicht. Ich versuche, einen benutzerdefinierten SimpleListFilter zu erstellen, mit dem dieses Feld gefiltert werden kann.SimpleListFIlter Standard
Allerdings möchte ich nur diejenigen zeigen, die standardmäßig nicht abgebrochen werden. Gibt es eine Möglichkeit, die Option "Nein" standardmäßig auszuwählen? Das ist mein Filter so weit:
class CanceledFilter(SimpleListFilter):
title = 'Canceled'
# Parameter for the filter that will be used in the URL query.
parameter_name = 'canceled'
def lookups(self, request, model_admin):
return (
(True, 'Yes'),
(False, 'No'),
)
def queryset(self, request, queryset):
if self.value() is True or self.value() is None:
return queryset.filter(canceled=True)
if self.value() is False:
return queryset.filter(canceled=False)
EDIT: ich etwas klarer sein sollte. Ich versuche speziell dies in der Admin-Oberfläche zu tun. Wenn ich den obigen Filter als list_filter in admin hinzufüge. Ich bekomme einen Filter auf der Seite der Admin-Seite mit 3 Auswahlmöglichkeiten: Alle, Ja und Nein.
Ich möchte, dass die "Nein" -Auswahl oder keine der Auswahlmöglichkeiten standardmäßig eingestellt ist. Stattdessen ist die Auswahl "Alle" immer standardmäßig festgelegt. Gibt es irgendeinen nicht hacky Weg, die Standardfilterwahl oder etwas so einzustellen.
Grundlegend im Admin, wenn sie die Mitglieder anzeigen, möchte ich nur die aktive (nicht abgebrochen) standardmäßig anzeigen. Wenn sie auf "Alle" oder "Ja" klicken, möchte ich die stornierten anzeigen.
Update: Hinweis das ist das gleiche wie Frage Default filter in Django admin, aber ich diese Frage ist jetzt 6 Jahre alt. Die angenommene Antwort wird als Django 1.4 markiert markiert. Ich bin nicht sicher, ob diese Antwort immer noch mit neueren Django-Versionen funktioniert oder immer noch die beste Antwort ist.
Angesichts des Alters der Antworten auf die andere Frage, bin ich mir nicht sicher, wie wir vorgehen sollten. Ich glaube nicht, dass es einen Weg gibt, die beiden zusammenzuführen.
möglich duplicate von [Standardfilter in Django admin] (http://StackOverflow.com/questions/851636/default-filter-in-django-admin) –
Ich fügte ein Update hinzu, das die doppelte Situation erklärt. Die Fragen sind die gleichen, aber die andere ist jetzt ziemlich alt. Ich bin mir nicht sicher, wie wir vorgehen sollen. – Jon
Die oben gewählte Antwort (nicht die akzeptierte) auf die ältere Frage ist immer noch gültig (Django 1.8) - wie ich dort geäußert habe. Überlassen wir die Entscheidung den Moderatoren. ;) –