2016-04-10 10 views
0

Django Suitの管理フィルタを使用しているときに値を選択すると、フィールド名が消えます。例えば が見て:画像に示すように http://djangosuit.com/admin/examples/kitchensink/enter image description heredjango suit adminフィルタ - ルックアップをオーバーライドする最も簡単な方法

誰かが「選択肢」フィールドを選択したとき、彼らは選択された値(トール)を見ることができます。

これはときどき悪いことがあります。たとえば、「在庫あり」のブール値フィールドの場合は「はい」と表示されますが、「在庫あり:はい」が表示されます。 私はカスタムフィルタを作成し、ルックアップタプルを指定することができますが、これを行うにはよりクリーンで持続可能な方法があるのだろうかと思います。

がありますどのくらいの冗長なコードを説明するために:

class InventoryFilter(admin.SimpleListFilter): 
    title = 'is_in_stock' 
    parameter_name = 'is_in_stock' 
    def lookups(self, request, model_admin): 
     return (('Yes', 'in stock:Yes'),('No', 'in stock:No')) 

    def queryset(self, request, queryset): 
     return queryset.filter(is_in_stock=True) 


@admin.register(Inventory) 
class InventoryAdmin(admin.ModelAdmin): 
    list_display = ('is_in_stock',) 
    list_filter = ('is_in_stock',) 

と私はすべての変数のためにこれをしなければなりません! 私はよりインテリジェントな方法を探しています。ありがとう

+0

私はカスタムフィルタの問題は表示されません。それはあまりにも多くのコードですか? –

答えて

0

テンプレートを拡張し、ドロップダウンの前にフィールド名を表示します(フィールドに値がある場合)。

+0

何とか私はテンプレートにクエリキーを渡す必要があります。唯一の方法は、コンストラクタでキーワード引数を使用することですが、クエリキーをクエリに変換する方法を理解できません。私の管理ページには、何百ものフィルタが存在するため、すべてのフィルタでこの処理を実行する必要はありません。 – max

+0

すべてのフィルタではなく、テンプレートにforloopがあると仮定しています;) –

関連する問題