2017-04-21 2 views
0

Ich habe einen Django-Admin, den ich versuche, meinen Standardfilter für zu ändern. Ich habe den Filter, der die Daten anzeigt, die ich als Standard will, aber meine Schaltfläche alle funktioniert nicht richtig, weil ich einen bestimmten Abfrage-Satz zurückgebe, wenn der Wert None ist. Gibt es eine Möglichkeit, eine funktionierende Schaltfläche "all" zu haben, ohne den Wert "All" zu ändern?Wie habe ich eine funktionierende All-Taste mit einem SimpleListFilter

class EmailFilter(admin.SimpleListFilter): 
    title = _('email category') 

    parameter_name = 'email_category' 

    def lookups(self, request, model_admin): 
     return (
      (10, _('Forwarded')), 
      (8, _('Spam')), 
     ) 

    def queryset(self, request, queryset): 
     if self.value() is not None: 
      return queryset.filter(email_category=self.value()) 
     return queryset 

class myAdmin(VersionAdmin): 
    list_filter = (EmailFilter) 

Antwort

0
class EmailFilter(admin.SimpleListFilter): 
    title = _('email category') 

    parameter_name = 'email_category' 

    def lookups(self, request, model_admin): 
     return (
      (None, _('Forwarded')), 
      (8, _('Spam')), 
      ('all', _('All')), 
     ) 

    def queryset(self, request, queryset): 
     if not self.value(): 
      return queryset.filter(email_category=10) # forwarded if None which it will be by default 
     elif self.value() == 'all': 
      return queryset 
     else: 
      return queryset.filter(email_category=self.value()) 
+0

Gibt es eine Möglichkeit zur Rückkehr ‚Weitergeleitete‘ standardmäßig ohne den Wert None hat? – Brad

+0

@Brad Ja, ich werde meine Antwort aktualisieren – Written

+0

Oh, warte, ich habe das nicht vollständig gelesen. Warum möchtest du nicht, dass der Wert None ist? – Written

Verwandte Themen