2017-04-21 12 views
0

デフォルトフィルタを変更しようとしているdjango管理者がいます。私はデフォルトとして必要なデータを表示するフィルタを持っていますが、値がNoneのときに特定のクエリーセットを返すので、私のすべてのボタンが正しく機能していません。 「すべて」の値を変更せずにすべてのボタンを機能させる方法はありますか?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

@ブラッドええ私は私の答えを更新します – Written

+0

ああ待って、私は完全にそれを読んでいない。なぜ値をNoneにしたくないのですか? – Written

関連する問題