Mau*_*rgi 5 python django filter django-filter
我有一个django-filter应用程序的问题:如何隐藏将产生零结果的项目.我认为有一种简单的方法可以做到这一点,但是idk如何.
我在ModelChoiceFilter上使用LinkWidget,如下所示:
provider = django_filters.ModelChoiceFilter(queryset=Provider.objects.all(),
widget=django_filters.widgets.LinkWidget)
Run Code Online (Sandbox Code Playgroud)
我需要做的是过滤查询集并仅选择将产生至少一个结果的Provider,并排除其他结果.有办法做到这一点?
基本上,您需要应用过滤器,然后再次应用它们,但是是在新生成的查询集上。像这样的东西:
f = SomeFilter(request.GET)
f = SomeFilter(request.GET, queryset=f.qs)
Run Code Online (Sandbox Code Playgroud)
现在,当您拥有正确的查询集时,您可以在init中动态覆盖提供程序:
def __init__(self, **kw):
super(SomeFilter, self).__init__(**kw)
self.filters['provider'].extra['queryset'] = Provider.objects.filter(foo__in=self.queryset)
Run Code Online (Sandbox Code Playgroud)
不漂亮但有效。您可能应该将这两个调用封装到过滤器上更有效的方法中。
| 归档时间: |
|
| 查看次数: |
1154 次 |
| 最近记录: |