モデルに、誰かがメンバーシップをキャンセルしたかどうかを表すブール フィールドがあります。このフィールドをフィルタリングできるカスタム SimpleListFilter を作成しようとしています。
ただし、デフォルトでキャンセルされていない人だけを表示したいのです。デフォルトで「いいえ」オプションを選択する方法はありますか?これはこれまでの私のフィルターです:
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)
編集:もう少し明確にする必要がありました。私は特に管理者インターフェースでこれをやろうとしています。上記のフィルターを管理者の list_filter として追加すると。管理ページの横にフィルターがあり、すべて、はい、いいえの 3 つの選択肢があります。
「いいえ」を選択するか、デフォルトで何も設定しないでください。代わりに、「すべて」の選択肢が常にデフォルトで設定されています。デフォルトのフィルター選択などを設定するためのハックではない方法はありますか。
基本的に、管理者がメンバーを表示するときに、デフォルトでアクティブな(キャンセルされていない)のみを表示したい. 「すべて」または「はい」をクリックすると、キャンセルされたものを表示したいと思います。
更新: これはDjango adminの質問 Default filter と同じであることに注意してください。ただし、その質問は現在 6 歳です。受け入れられた回答は、Django 1.4 を必要とするものとしてマークされています。その答えが新しい Django バージョンでも機能するのか、それとも最良の答えなのかはわかりません。
他の質問への回答が古くなっていることを考えると、どのように進めるべきかわかりません。両者を融合させる方法はないと思います。