【发布时间】:2012-02-20 22:20:39
【问题描述】:
考虑一个标签数组,T。
每个 PhotoSet 都与标签具有多对多的关系。
我们还有一个过滤器,F(由一组标签组成),我们想要返回所有包含在 F 中的所有标签的 PhotoSet。
即。如果 F = ['green', 'dogs', 'cats'],我们希望每个 PhotoSet 实例都具有 所有 F 中的标签。
自然
PhotoSet.objects.filter(tags__in=F)
不成功,因为它返回 每个 PhotoSet 包含 F 的 any 成员。
我看到使用“Q”表达式可以使用类似的东西,但这似乎只适用于有限数量的合取参数。这是可以使用列表推导来完成的吗?
提前致谢!
编辑——解决方案:
我通过一种显而易见的方式找到了解决方案。简单地链接过滤器...
results = PhotoSets.objects
for f in F:
results = results.filter(tags__in=[f])
results = results.all()
一直盯着我的脸!
【问题讨论】:
标签: python django django-queryset