【发布时间】:2019-07-10 11:07:29
【问题描述】:
我的表有这个值:
id, product, category
1, A, 1
2, B, 1
3, B, 2
4, C, 1
5, C, 2
6, D, 2
7, E, 2
8, E, 3
9, F, 3
10, F, 4
我只需要在 Django 中选择匹配类别(1 或 2)和类别(3 或 4)的产品。预期结果只是产品:E
我有错误“mysql 不支持交叉点”我如何使用 Q() 来实现?
此查询不返回任何结果但有效。
main_query = Q()
main_query &= Q(category__in=[1,2])
main_query &= Q(category__in=[3,4])
models.Table.objects.filter(main_query)
【问题讨论】:
-
你的预期输出是什么?
-
表中的每条记录只有一个类别。该类别不可能同时在 1 或 2 中,并且在 3 或 4 中。
-
Q() 无法帮助您解决表中的单行无法同时匹配两个条件的逻辑问题。将 Q() 放入问题中有些模糊了您关于查询逻辑的原始问题。
-
你没有理解我的问题。
-
@cuscode 你花了 40 分钟来解释你想要什么。这就是我投反对票的原因。