很抱歉,如果这个问题以前有人回答,但我做了很多谷歌搜索没有成功。在
我知道如何在管理视图中创建自定义的list_filter
(例如,子类化SimpleFilter
)。在
我真正想要的,是一种方法(在管理列表视图上)“检查”不同的过滤器,将它们组合在一个或公式中。在
例如,假设您有:
# models.py
class Foo(models.Model):
foobar = ...
foofie = ...
...
# admin.py
class FooAdmin(admin.ModelAdmin):
list_filter = ( "foobar", "foofie" )
...
在FooAdmin
生成的管理列表视图中,我可以选择按foobar
或{foobar = X OR foofie = Y
,其中X
和{
有可能吗?在
我知道在django管理视图中并不是所有事情都是可能的,但这似乎是一个非常常见的请求,我想知道我是否错过了理解或阅读的内容。在
另外,第三方应用程序也可以使用。谢谢:)
找到了一个解决方案:
应用程序名称/模板/管理/应用程序名称/更改_列表.html公司名称:
^{pr2}$从@dima kudosh借了一些代码。在
解释
^{} 从}s(筛选器规范),然后使用^{} 到{a3}。在
ModelAdmin.list_filter
创建{^{} 使用
used_parameters
过滤查询集:queryset.filter(**self.used_parameters)
。在因此,我们可以从
OrListFilter.fields
创建FieldListFilter
,并使用它们的used_parameters
构造或查询:首先,我试图解释django管理过滤器的工作原理。当您想在管理页面中过滤查询集时,django会查找所有注册的过滤器。如果使用此值为filter django filter queryset设置值。如果设置多个过滤器django将queryset过滤两次,则等于queryset=查询集过滤器(param1=1).filter(param2=2)或在SQL中:选择。。。其中param1=1和param2=2。因为你不能用标准的django过滤器来做。但您可以编写自己的过滤器,如下所示:
并在管理员中注册:
^{pr2}$它不能与标准的django过滤器一起工作,list_filter中的所有值都必须从ORListFilter类继承。它也不能与日期时间过滤器一起工作,但是你可以添加这个功能。在
我刚刚发现了一个第三方应用程序,它是django-advanced-filters,可能符合你的要求。在
它有:
我已经运行了一个测试,添加一个
OR field
就可以了。 这是截图:相关问题 更多 >
编程相关推荐