qdo*_*dot 5 database django django-admin
我有一个问题 - Django 管理界面是否可以以这样的方式进行自定义,使其仅显示与当前所选过滤器匹配的数据子集中出现的过滤器选项?
假设我有一个包含三个对象的数据库:
a.Foo = "One"
a.Bar = "Drink"
b.Foo = "One"
b.Bar = "Shot"
c.Foo = "Two"
c.Bar = "Shot"
Run Code Online (Sandbox Code Playgroud)
以及一个 django 管理界面,其中包含“Foo”和“Bar”过滤器。我想要以下行为:
干杯!
更具体地说 - 阅读一些文档后:
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
Run Code Online (Sandbox Code Playgroud)
然而,它所做的是获取“查询集”,就像没有其他过滤器一样。我怎样才能让它通过其他过滤器?
理论上我可以手动解析请求和过滤器 - 但肯定需要有一种方法来管理所有过滤器。
这种动态过滤看起来确实很像分面。虽然您可以使用标准查询集实现此结果,但这可能不是最佳的。您可能有更多机会使用专用工具,例如 Solr。