我有一個問題 - 可以自定義Django Admin界面,它只顯示那些匹配當前選定過濾器的數據子集中出現的那些過濾器選項?django管理過濾器級聯
說我有三個對象的DB:
a.Foo = "One"
a.Bar = "Drink"
b.Foo = "One"
b.Bar = "Shot"
c.Foo = "Two"
c.Bar = "Shot"
,並與「富」和「酒吧」過濾器Django管理界面。我想要下面的行爲:
- 如果沒有過濾器被選中,'Foo'列出「一」,「兩」; 'Bar'列出「Drink」,「Shot」
- 如果'Foo'過濾器設置爲「One」,'Bar'列出「Drink」和「Shot」
- 如果'Foo'如果'Bar'過濾器設置爲'Shot','Foo'將同時列出「One」和「Two」
- 如果'Bar'過濾器設置爲「飲料「,」Foo「僅列出」One「
乾杯!
更具體 - 閱讀一些文檔後:
from django.contrib.admin import SimpleListFilter
class SomeFilter(SimpleListFilter):
title = "Foo"
parameter_name="Some"
def lookups(self, request, model_admin):
qs = model_admin.queryset(request)
print qs.query
return (('Foo', 'Bar'))
def queryset(self, request, queryset):
if (self.value()):
return queryset.filter(Some=self.value())
else:
return queryset
它做什麼,但是,是得到「查詢集」,因爲它會一直沒有其他過濾器。我怎樣才能通過其他過濾器?
我可以在理論上解析請求和手動過濾 - 但肯定需要一個方式來管所有過濾器。
在一些研究之後添加了更多信息 - 我無法完全弄清楚如何在所有其他過濾器通過它傳遞後獲取查詢集。 – qdot