2017-04-21 68 views
0

我有一個django管理員,我正在嘗試更改我的默認篩選器。我有過濾器顯示我想要的數據作爲默認值,但我的所有按鈕都無法正常工作,因爲當值爲無時,我返回特定的查詢集。有沒有一種方法可以在不更改「全部」值的情況下生效所有按鈕?我如何有一個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) 

回答

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

是否有辦法在默認情況下,無需無的價值它返回「轉發」? – Brad

+0

@Brad是啊我會更新我的回答 – Written

+0

哦,等等,我沒有完全讀到。你爲什麼不想讓價值成爲無? – Written

相關問題