django-filter连接不能按预期工作

时间:2018-05-07 00:39:49

标签: python django django-filter

我在我的应用程序中使用django-filter来实现一些基本过滤。默认情况下,django-filter会执行OR查询,但我想进行AND查询。

我已尝试使用文档中描述的conjoined=True,但它仍使用OR返回结果。

我的代码如下所示:

class ReservationFilter(django_filters.FilterSet):
    tags = django_filters.ModelMultipleChoiceFilter(queryset=Tag.objects.all(), conjoined=True)

其中tagsReservation模型中的m2m键:

`tags = models.ManyToManyField(Tag, related_name='tags')`

如何构建AND查询?

1 个答案:

答案 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
)