0

我有以下模型:

class Parent(models.Model):
    title = models.CharField(max_length=255)


class Child(models.Models):
    title = models.CharField(max_length=255)
    parent = models.ForeignKey(Parent)

如何从父级获取所有条目,其中子级计数等于 0?我需要通过父模型来完成,如下所示:

 Parent.objects.filter(smth_condition)
4

2 回答 2

2

. 从 django.db.models 导入计数

Parent.objects.annotate(cc=Count('child')).filter(cc=0)

可以使用 annotate() 子句生成每个对象的摘要。当指定 annotate() 子句时,QuerySet 中的每个对象都将使用指定的值进行注释。

以类似于跨越关系的查找的方式,在与您查询的模型或模型相关的字段上的聚合和注释可以包括遍历“反向”关系。此处也使用相关模型的小写名称和双下划线。

也可以过滤带注释的值。注释的别名可以像任何其他模型字段一样在 filter() 和 exclude() 子句中使用。

另一种方法可能更有效,具体取决于您的表,就是

Parent.objects.filter(child=None)
于 2013-03-28T16:46:37.617 回答
1

也试试

Parent.objects.filter(child=None)
# or
Parent.objects.filter(child__isnull=True)
于 2013-03-28T16:51:51.153 回答