如何使用多对多关系中的多项选择来过滤对象

时间:2019-04-09 12:30:43

标签: django django-views

在此简化的示例中,我具有名为MovieGenre的多对多关系模型。 模板显示了多项选择框,我可以在其中选择多个流派,这些流派作为数组返回到视图,例如genres = ['Action', 'Comedy', 'Drama']

现在,我需要过滤Movie对象,该对象恰好具有这三种类型(选择的实际数量可能有所不同)。

我知道我可以使用Movie.objects.filter(genre__name__exact = 'Action')过滤单项选择。我知道我可以使用 Movie.objects.filter(genre__name__in = ['Action', 'Comedy', 'Drama']),但返回的影片至少具有数组中一种流派,我不需要。

我需要的是一个电影查询集,其确切具有['动作','喜剧','戏剧'],不多也不少。

我还尝试过首先获取类型查询集: Genre.objects.filter(name__in = ['Action', 'Comedy', 'Drama']),然后使用此查询集过滤Movie对象,但我不知道它是否是 甚至可能。

我已经阅读过documentation进行查询的内容,但是没有找到解决方法。

1 个答案:

答案 0 :(得分:0)

您可以使用Q对象。这些也可以动态使用,即以任意数量的See here.

连接