有A、B、C三种型号:
Class A:
some_field = models.CharF...
Class B:
a = models.ForeignKey('A')
с = models.ForeignKey('С')
Class C
some_field = models.CharF...
如何使用Django orm获取属于C的对象A的数量?
例如:
有对象:A1,A2。
对象:C1。
和连接:B1(A1,C1),B2(A1,C1),B3(A2,C1)。
在此示例中,属于 C 的对象 A 的数量将为 2。
我试过这样的:
queryset = A.objects.all()
queryset.values('b__c').annotate(num_results=Count('b__c'))
结果,我得到对象 C1 拥有 3 个对象。因此,我计算连接数,这不适合我。
最终代码,解释将在下面。
据我了解模型,有 3 个物理表,'A'、'B'、'C'。
表“B”具有所有必要的链接,我们只需要删除其中的重复项,我们不需要表 A。
从表 B 中选择所有记录
我们进一步扩展此查询,但保留一个值以删除重复项
并删除重复项
现在我们算
取决于任务,同样可以通过 python 完成,我们得到了值,删除了重复项,找出了数组的长度。
在这种特殊情况下:
也可以这样:
通常,您可以将 many_to_many 字段添加到模型中: