想象一下这样的模型事件
| 姓名|电邮|
| - -|- -|
| A级|u1@example.org|
| 乙|u1@example.org|
| 乙|u1@example.org|
| C语言|u2@example.org|
| 乙|u3@example.org|
| 乙|u3@example.org|
| A级|u4@example.org|
| 乙|u4@example.org|
我希望查找包含名称A
和B
的所有电子邮件。在我的示例["u1@example.org", "u4@example.org"]
中
今天我在做
emails = [
e["email"]
for e in models.Event.objects.filter(name__in=["A", "B"])
.values("email")
.annotate(count=Count("id"))
.order_by()
.filter(count__gt=1)
]
它不工作,因为我也得到重复的电子邮件只包含一个名称(如u3@example.org
)。
2条答案
按热度按时间3phpmpom1#
在尝试了不同的方法后,我找到了解决办法
我需要按
email
分组,计算不同name
的数量,并按等于事件数量的计数进行筛选。waxmsbnn2#
如果您不需要该模型,则可以使用此选项,它会产生预期的结果:
至于ORM,问题出在查询的最后一部分,似乎不可能正确地构建WHERE子句。我最好的尝试是使用Q查找,仍然......同样的问题: