2016-04-10 48 views
0

當使用Django西裝的管理過濾器,因爲我選擇一個值,字段名稱消失。 例如在瀏覽: http://djangosuit.com/admin/examples/kitchensink/ enter image description heredjango適合管理過濾器 - 最簡單的方法來覆蓋查找

正如圖所示,當有人選擇「選擇」字段,它們只能看到被選擇(高)的值。

這有時可能是壞的;例如,對於「庫存」布爾字段,您只會看到「是」,但我更願意看到「有存貨:是」。 我知道我可以做一個自定義過濾器,並指定查找元組,但我想知道是否有更清潔更可持續的方式來做到這一點。

爲了說明有多少冗餘代碼有:

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;) –

相關問題