【发布时间】:2016-04-09 12:57:54
【问题描述】:
我使用Django-filter 允许用户根据两个字段中的多项选择来过滤数据库。 filterset.py 看起来像这样:
class TapFilter(django_filters.FilterSet):
bar__region = django_filters.MultipleChoiceFilter(choices=CHOICES, label="Regions:", widget=forms.CheckboxSelectMultiple,help_text="")
bar = django_filters.ModelMultipleChoiceFilter(queryset=Bar.objects.all(), label="Bars:", widget=forms.CheckboxSelectMultiple,help_text="")
但是,这用作两个列表之间的 AND。我需要 OR 代替。也就是说,我需要显示与任一类别中的选择匹配的任何内容。
我看到过使用普通过滤器的类似问题,但如果可能的话,我更愿意继续使用 django-filter。
有问题的网站在这里:http://bestap.pythonanywhere.com/
更新:我已将它放在我的 filtersets.py 中,但显然我做的不对...
class TapFilter(django_filters.FilterSet):
bar__region = django_filters.MultipleChoiceFilter(choices=CHOICES, label="Regions:", widget=forms.CheckboxSelectMultiple,help_text="")
bar = django_filters.ModelMultipleChoiceFilter(queryset=Bar.objects.all(), label="Bars:", widget=forms.CheckboxSelectMultiple,help_text="")
def qs(self):
base_qs = Bar.objects.all()
qs = Bar.objects.none()
for name, filter_ in six.iteritems(self.filters):
value = self.form.cleaned_data[name]
qs = qs | filter_.filter(base_qs, value)
return qs
这给了我错误“函数”对象没有属性“计数”。
【问题讨论】:
-
您需要了解更多详细信息,例如您如何尝试使用此过滤器。
标签: python django django-filter