查询中的Django连接筛选器

2024-05-21 01:06:34 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑一个标记数组T

每个照片集都与标签有多对多的关系。在

我们还有一个过滤器,F(由一组标记组成),我们要返回F中包含所有标记的所有photoset

即,。如果F=['green'、'dogs'、'cats'],我们希望每个PhotoSet实例在F中有所有标记

自然

PhotoSet.objects.filter(tags__in=F)

不起作用,因为它返回everyPhotoSet包含F的任何成员

我知道使用“Q”表达式也可以使用类似的东西,但这似乎只适用于有限数量的合取参数。这是不是可以用列表理解来完成??在

提前谢谢!在

编辑--解决方案:

我用一种显而易见的方法找到了解决办法。只是链接过滤器。。。在

^{pr2}$

一直盯着我的脸!在


Tags: 实例标记过滤器objects关系tagsgreen标签
1条回答
网友
1楼 · 发布于 2024-05-21 01:06:34

有点又快又脏,但它会起作用的:

query = None
for tag in F:
    if query is None:
        query = Q(tags=tag)
    else:
        query &= Q(tags=tag)

PhotoSet.objects.filter(query)

相关问题 更多 >