我在我的应用程序中使用django-filter来实现一些基本过滤。默认情况下,django-filter
会执行OR
查询,但我想进行AND
查询。
我已尝试使用文档中描述的conjoined=True
,但它仍使用OR
返回结果。
我的代码如下所示:
class ReservationFilter(django_filters.FilterSet):
tags = django_filters.ModelMultipleChoiceFilter(queryset=Tag.objects.all(), conjoined=True)
其中tags
是Reservation
模型中的m2m键:
`tags = models.ManyToManyField(Tag, related_name='tags')`
如何构建AND
查询?
答案 0 :(得分:0)
我对ForeignKey关系有同样的问题。
我给了conjoined = False参数,它起作用了。查询为AND
。
但这可能会造成混淆,这就是为什么我使用自定义方法编写自己想要的逻辑的原因:
def my_custom_method(queryset, name, value):
pass
django_filters.ModelMultipleChoiceFilter(
method=my_custom_method, conjoined=True, queryset=your_qs
)