如何在 django 中根据孩子过滤父级



我有这个

from django.db import models
class Kid(models.Model):
    name = models.CharField(max_length=200)
class Toy(models.Model):
    name = models.CharField(max_length=200)
    owner = models.ForeignKey(Kid)

我有这个查询集

kids = Kid.objects.all()

现在我想过滤孩子整个玩具都有名字star在里面

我无法决定应用哪个过滤器

kids.filter(toys_set__icontains='star')

Kid.objects.distinct().filter(toy__name__icontains='star')

请注意distinct()方法。 这是必需的,因为孩子可以有几个"星星"玩具,所以没有distinct(),你会在查询集中得到重复项。

如果要在使用聚合时按找到的玩具数量筛选孩子:

Kid.objects.distinct().filter(toy__name__icontains='star') 
                      .annotate(toys_num=Count('toy')).filter(toys_num__gt=4)

最新更新