gpt4 book ai didi

python - Django使用ManyToMany过滤多次映射

转载 作者:太空宇宙 更新时间:2023-11-03 21:42:25 25 4
gpt4 key购买 nike

假设我的 models.py 中有类似的内容:

class A(models.Model):
name = CharField(max_length=20)

class B(models.Model):
a = models.ManyToManyField(A)

我想要得到与B有多次映射的A。

最佳答案

我们可以用 B 的数量来注释 A 对象,然后我们根据该数字进行过滤,例如:

from django.db.models import Count

A.objects.annotate(
n_b=Count('b')
).filter(n_b__gt=1)

因此,所有A对象都用属性.n_b(相关B的数量)进行注释,然后我们进行过滤此数字 n_b 大于 (__gt) 1。

然后,这会生成一个如下查询:

SELECT a.*, COUNT(a_b.b_id) AS n_b
FROM a
LEFT OUTER JOIN a_b ON a_b.a_id = a.id
GROUP BY a.id
<b>HAVING COUNT(a_b.b_id) > 1</b>

关于python - Django使用ManyToMany过滤多次映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52754944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com